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

Discussion dans 'Web, design' créé par k o D, 26 Mai 2004.

Statut de la discussion:
Fermée.
  1. Offline
    k o D Belge !
    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... :?
    k o D, 26 Mai 2004
    #1
  2. Offline
    Jereck Procrastinateur
    Equipe GamerZ.be
    Essaie de mettre le language dans le titre ;)
    Jereck, 26 Mai 2004
    #2
  3. Offline
    eGm_ Guinea Trump
    c'est quel langage?
    eGm_, 26 Mai 2004
    #3
  4. Offline
    c est du pascal non ???
    ben15 aka pOiRe, 26 Mai 2004
    #4
  5. Offline
    k o D Belge !
    Oui Pascal désolé, j'ai oublié de le mettre
    k o D, 26 Mai 2004
    #5
  6. Offline
    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 ??
    ben15 aka pOiRe, 26 Mai 2004
    #6
  7. Offline
    k o D Belge !
    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. 
    k o D, 26 Mai 2004
    #7
  8. Offline
    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.
    ben15 aka pOiRe, 26 Mai 2004
    #8
  9. Offline
    k o D Belge !
    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...
    k o D, 26 Mai 2004
    #9
  10. Offline
    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 ????
    ben15 aka pOiRe, 26 Mai 2004
    #10
  11. Offline
    k o D Belge !
    Complètement... :D

    5ème Humanités Informatique Collège St Vincent de Soignies :p
    k o D, 26 Mai 2004
    #11
  12. Offline
    :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 :)
    ben15 aka pOiRe, 26 Mai 2004
    #12
  13. Offline
    k o D Belge !
    Et comment que celà m'intéresse :D

    Je dois justement faire celà :wink:

    Add mon msn
    k o D, 26 Mai 2004
    #13
  14. Offline
    k o D Belge !
    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
    k o D, 26 Mai 2004
    #14
Statut de la discussion:
Fermée.