[AIDE - Pascal] Fonctionnement de procédure...

Statut
N'est pas ouverte pour d'autres réponses.

k o D

Elite
Voilà je m'explique.

Je rentre dans une procédure avec 1 tableau (passé grâce à 1 type) et je voudrais resortir plusieurs infos... mais seulement avec ce que j'ai fait, impossible...

Voici mon programme:

Code:
program test5; 
uses crt;                     
type tab=array [1..2] of integer;
var a:tab;
var w,z:integer;
procedure mic (x:tab; u:integer; i:integer);
         begin
         writeln(x[1],' - ',x[2]);
         u:=1;
         i:=2;
         end;
begin 
a[1]:=5;
a[2]:=6;
mic(a,w,z);                               
writeln(a[1],' - ',a[2],' - ',w,' - ',z);
readkey;
end.
Il se trouve que quand j'affiche le 'w' et le 'z' il me donne la valeur '0' pour les 2... :?
 

Jereck

Α & Ω
Staff
Essaie de mettre le language dans le titre ;)
 

eGm_

Gibon Blasé
c'est quel langage?
 
1er
OP
k o D

k o D

Elite
Oui Pascal désolé, j'ai oublié de le mettre
 
je suis dsl, je comprend absolument pas ce que tu veux faire la, et donc le problème ne me saute pas aux yeux. tu pourrais pas expliquer d'avantage ???

c est un tableau de 2 entiers, tu le remplis, puis tu le passes dans la procédure. mais quel doit etre le role de la procédure ??
 
1er
OP
k o D

k o D

Elite
ben15 aka pOiRe a dit:
je suis dsl, je comprend absolument pas ce que tu veux faire la, et donc le problème ne me saute pas aux yeux. tu pourrais pas expliquer d'avantage ???

c est un tableau de 2 entiers, tu le remplis, puis tu le passes dans la procédure. mais quel doit etre le role de la procédure ??
Ici il s'agit d'un bête exemple parce que mon programme est trop long au sinon....

En fait je dois pouvoir rentrer un tableau et à partir de celui-ci, 3 entiers doivent ressortir.

Bon sinon là le programme que j'ia mis en exemple ne sert à rien.

Code:
procedure mic (x:tab;u:integer);
         begin
         writeln(x[1],' - ',x[2]); 

-> affichage pour voir si le tab est bien passé dans la procédure -> OK!

         u:=1;

-> initialisation du u qui correspond au "w" du programme

         end;
begin 
a[1]:=5;
a[2]:=6;
mic(a,w);                               {mic est la fonction}
writeln(a[1],' - ',a[2],' - ',w);

-> Affichage final, le "w" devrait valoir "1" mais il veut "0"
readkey;
end.
 
En fait je dois pouvoir rentrer un tableau et à partir de celui-ci, 3 entiers doivent ressortir
ca m'aide pas trop :?

la ou est l'erreur a mon avi, c'est que dans une procédure, tout passe par copie, et tu ne peux pas y modifier des variable du pgm principale.

( enfin en C c'est comme ca, pour pouvoir le faire'il faut utiliser des pointeurs )
mais bon, ya lgtps que j'ai plus fais de pascal, dc je peux pas trop t'aider.
 
1er
OP
k o D

k o D

Elite
ben15 aka pOiRe a dit:
En fait je dois pouvoir rentrer un tableau et à partir de celui-ci, 3 entiers doivent ressortir
ca m'aide pas trop :?

la ou est l'erreur a mon avi, c'est que dans une procédure, tout passe par copie, et tu ne peux pas y modifier des variable du pgm principale.

( enfin en C c'est comme ca, pour pouvoir le faire'il faut utiliser des pointeurs )
mais bon, ya lgtps que j'ai plus fais de pascal, dc je peux pas trop t'aider.
Bah tu vois dans mon programme réel j'ai pas besoin qu'il change quoi que ce soit.

Je rentre un tableau et en fonction des valeurs du tableau, il me resort 3 entiers...
 
sorry je sais pas t'aider plus, j'ai vu les procédure en pascal l'année dernière, et j'ai peur de t'induire en erreur en confondant avec les fonctions en C.

appart ca, je parie que tu es en 1ere candi informatique aux FUNP jme trompe ????
 
1er
OP
k o D

k o D

Elite
ben15 aka pOiRe a dit:
sorry je sais pas t'aider plus, j'ai vu les procédure en pascal l'année dernière, et j'ai peur de t'induire en erreur en confondant avec les fonctions en C.

appart ca, je parie que tu es en 1ere candi informatique aux FUNP jme trompe ????
Complètement... :D

5ème Humanités Informatique Collège St Vincent de Soignies :p
 
k 0 DiaK a dit:
ben15 aka pOiRe a dit:
sorry je sais pas t'aider plus, j'ai vu les procédure en pascal l'année dernière, et j'ai peur de t'induire en erreur en confondant avec les fonctions en C.

appart ca, je parie que tu es en 1ere candi informatique aux FUNP jme trompe ????
Complètement... :D

5ème Humanités Informatique Collège St Vincent de Soignies :p
:D
bizzare alors, car j'ai lu que tu devais faire un touché coulé, c'est exactement ce que j'ai du faire l'année passé :)

ca t'interesse le code pascal du touché coulé ???
ya meme une mini IA intégrée, et ca marche !!!! souvent l ordi me bat :)
 
1er
OP
k o D

k o D

Elite
ben15 aka pOiRe a dit:
k 0 DiaK a dit:
ben15 aka pOiRe a dit:
sorry je sais pas t'aider plus, j'ai vu les procédure en pascal l'année dernière, et j'ai peur de t'induire en erreur en confondant avec les fonctions en C.

appart ca, je parie que tu es en 1ere candi informatique aux FUNP jme trompe ????
Complètement... :D

5ème Humanités Informatique Collège St Vincent de Soignies :p
:D
bizzare alors, car j'ai lu que tu devais faire un touché coulé, c'est exactement ce que j'ai du faire l'année passé :)

ca t'interesse le code pascal du touché coulé ???
ya meme une mini IA intégrée, et ca marche !!!! souvent l ordi me bat :)
Et comment que celà m'intéresse :D

Je dois justement faire celà :wink:

Add mon msn
 
1er
OP
k o D

k o D

Elite
C'est bon j'ai trouvé la solution

Il suffit de mettre un "var" devant.

Code:
procedure mic(var x:integer);
Et çà marche tout seul.

Merci quand même à ceux qui ont répondu :D
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut