IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

Affichage de tableaux


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Février 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 1
    Par défaut Affichage de tableaux
    Bonjour,
    j'ai problème avec mon code pascal
    le problème : l'affichage des résultats donne des zeros
    je veux savoir le problème
    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    program ex7; 
    uses wincrt; 
    type tab=array [0..100] of longint; 
    var x,y,z:longint; T1,T2:tab; 
    i,n:integer; 
     
    procedure saisirtaille(var n:integer); 
    begin 
    repeat 
    write ('donner la taille du tableau '); 
    readln(n); 
    until (n in [1..100]); 
    end; 
     
    procedure saisirelements(var T1:tab;n:integer); 
    begin writeln('donner des entiers à 3 chiffres'); 
    for i:=1 to n do 
    begin 
    repeat 
    write('T1[',i,']='); 
    readln(T1[i]); 
    until (T1[i]>=100)and(T1[i]<=999); 
    end; 
    end; 
     
    procedure remplir(var T2:tab;T1:tab;n:integer;var x,y,z:longint); 
    begin 
    for i:= 1 to n do 
    begin 
    x:= ( T1[i] div 100); 
    y:= ((T1[i] mod 100)div 10); 
    z:= ((T1[i] mod 100) mod 10); 
    T2[i]:= ((sqr(x))+(sqr(y))+sqr(z)); 
     
    end; 
    end; 
     
    procedure afficher(T1,T2:tab;n:integer); 
    begin 
    for i:=1 to n do 
    begin 
    write ('T1[',i,']=',T1[i]); 
    write (' '); 
    writeln('T2[',i,']=',T2[i]); 
    end; 
    end; 
     
    begin 
    saisirtaille(n); 
    saisirelements(T1,n); 
    remplir(T1,T2,n,x,y,z); 
    afficher(T1,T2,n); 
    end.
    merci d'avance pour vos réponses.

  2. #2
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour

    Il serait utile de préciser aussi ce que fait ton programme.

    Pour revenir à ton soucis, regardes l'ordre de passage de tes paramètre à la procédure remplir et comment c'est traité dans la procédure
    Vu ce que fait ta procédure il faut intervertir les paramètres passés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    remplir(T2,T1,n,x,y,z);
    Tu vois ce que je veux dire? prends également le temps d'indenter ton code

    Cordialement

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hoe,

    Au passage, prends l'habitude de mettre ton code en forme.

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    program ex7; 
     
    uses wincrt; 
     
    type 
      tab = array [0..100] of Longint; 
    var 
      x, y, z: Longint; 
      T1, T2: tab; 
      i, n: Integer; 
     
    procedure saisirtaille(var n: Integer); 
    begin 
      repeat 
        Write ('donner la taille du tableau '); 
        Readln(n); 
      until (n in [1..100]); 
    end; 
     
    procedure saisirelements(var T1: tab; n: Integer); 
    begin 
      Writeln('donner des entiers à 3 chiffres'); 
      for i := 1 to n do 
      begin 
        repeat 
          Write('T1[', i, ']='); 
          Readln(T1[i]); 
        until (T1[i] >= 100) and (T1[i] <= 999); 
      end; 
    end; 
     
    procedure remplir(var T2: tab; T1: tab; n: Integer; var x, y, z: Longint); 
    begin 
      for i := 1 to n do 
      begin 
        x     := (T1[i] div 100); 
        y     := ((T1[i] mod 100) div 10); 
        z     := ((T1[i] mod 100) mod 10); 
        T2[i] := ((Sqr(x)) + (Sqr(y)) + Sqr(z)); 
      end; 
    end; 
     
    procedure afficher(T1, T2: tab; n: Integer); 
    begin 
      for i := 1 to n do 
      begin 
        Write ('T1[', i, ']=', T1[i]); 
        Write (' '); 
        Writeln('T2[', i, ']=', T2[i]); 
      end; 
    end; 
     
    begin 
      saisirtaille(n); 
      saisirelements(T1, n); 
      remplir(T1, T2, n, x, y, z); 
      afficher(T1, T2, n); 
    end.
    C'est tout de suite plus lisible, non ?

    (Je me suis contenté de le mettre en forme, pas de correction. À dire vrai, je ne l'ai même pas lu, trop feignant ce soir ).

  4. #4
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    salut
    il ya une erreur " quotidienne " dans le passage des paramètres
    le ; et la cause de l'erreur
    donc soit tu fais comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure remplir(var T2 , T1: tab; n: Integer; var x, y, z: Longint);
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure remplir(var T2: tab ; var T1: tab; n: Integer; var x, y, z: Longint);
    sinon pour le reste j'ai pas testé mais ca était juste un clin d'œil vu l'erreur que tu reçois

  5. #5
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour
    Citation Envoyé par slim_java Voir le message
    salut
    il ya une erreur " quotidienne " dans le passage des paramètres
    le ; et la cause de l'erreur
    donc soit tu fais comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure remplir(var T2 , T1: tab; n: Integer; var x, y, z: Longint);
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure remplir(var T2: tab ; var T1: tab; n: Integer; var x, y, z: Longint);
    sinon pour le reste j'ai pas testé mais ca était juste un clin d'œil vu l'erreur que tu reçois
    Je ne vois pas pourquoi il passerait T1 par adresse alors que le code ne le demande pas (il y a que lecture de T1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure remplir(var T2:tab;T1:tab;n:integer;var x,y,z:longint); 
    begin 
        for i:= 1 to n do 
        begin 
           x:= ( T1[i] div 100); 
           y:= ((T1[i] mod 100)div 10); 
           z:= ((T1[i] mod 100) mod 10); 
          T2[i]:= ((sqr(x))+(sqr(y))+sqr(z)); 
     
        end; 
    end;

  6. #6
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par krachik Voir le message
    Bonjour


    Je ne vois pas pourquoi il passerait T1 par adresse alors que le code ne le demande pas (il y a que lecture de T1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure remplir(var T2:tab;T1:tab;n:integer;var x,y,z:longint); 
    begin 
        for i:= 1 to n do 
        begin 
           x:= ( T1[i] div 100); 
           y:= ((T1[i] mod 100)div 10); 
           z:= ((T1[i] mod 100) mod 10); 
          T2[i]:= ((sqr(x))+(sqr(y))+sqr(z)); 
     
        end; 
    end;
    salut
    tout a fait d'accord
    j'ai cru que j'ai pu deviné l'erreur sans voir le code ..DSL
    tu avais raison pour ta premiére réponse remplir(T2,T1,n,x,y,z);

Discussions similaires

  1. [CRXI]Affichage entête tableaux croisés
    Par lazarel dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 18/09/2007, 13h43
  2. affichage somme tableaux
    Par jcaspar dans le forum Langage
    Réponses: 6
    Dernier message: 21/02/2007, 16h10
  3. Problème d'affichage de tableaux
    Par Jasmine80 dans le forum Bioinformatique
    Réponses: 2
    Dernier message: 02/02/2007, 11h37
  4. [Tableaux] affichage de tableaux
    Par Yukhaa dans le forum Langage
    Réponses: 3
    Dernier message: 05/06/2006, 12h04
  5. Réponses: 3
    Dernier message: 07/04/2006, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo