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 :

Problème de passage des paramètres [TPW]


Sujet :

Turbo Pascal

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Par défaut Problème de passage des paramètres
    soit le programme suivant qui permet de:
    • remplir les tableaux Nom, Prénom,Dc, Ds par la procedure Rempir
    • Calculer les moyennes des élèves par la procédure Calculer qui fait appel à la fonction Moyenne
    • Afficher les noms, prénoms et moyennes des élèves par la procédure Afficher

    Le problème : lorsque j'exécute le programme il affiche des moyennes = 0
    Voila le code de programme
    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
     
    program ex;
    uses wincrt;
    type T1=Array[1..90]of string[20];
    T2 = Array[1..90]of real;
    var
    Nom,Prenom:T1;
    dc,ds,Moy:T2;
    n:integer;
     
    procedure remplir(var N,P:T1;var S,C:T2;x:integer);
    var i:integer;
    begin
    for i:=1 to x do
    begin
    writeln('donner le nom de l''élève N° ',i); readln(N[i]);
    writeln('donner le prénom de l''élève N° ',i); readln(P[i]);
    writeln('donner la note du devoir de controle');readln(C[i]);
    writeln('donner la note du devoir de synthèse');readln(S[i]);
    end;
    end;
     
    function Moyenne(c1,s1:T2;j:integer):real;
    begin
    Moyenne:=(c1[j]+2*s1[j])/3;
    end;
     
    procedure calculer(var M:T2;C,S:T2;x:integer);
    var i:integer;
    begin
    for i:= 1 to x do
    begin
    M[i]:=Moyenne(c,s,i);
    end;
    end;
     
    procedure afficher(N,P:T1;M:T2;x:integer);
    var i:integer;
    begin
    for i:= 1 to x do
    writeln('l''élève ',N[i],' ',P[i], ' a une moyenne ',M[i]:5:2);
    end;
     
    begin
    repeat
    writeln('donner n '); readln(n);
    until (n>0);
    Remplir(Nom,Prenom,Dc,Ds,n);
    Calculer(Dc,Ds,Moy,n);
    Afficher(Nom,Prenom,Moy,n);
    end.

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Bonsoir;
    L'erreur se trouve au niveau de l'ordre des paramètres.
    Regarde la ligne rouge ci-dessous.

    begin
    repeat
    writeln('donner n '); readln(n);
    until (n>0);
    Remplir(Nom,Prenom,Dc,Ds,n);
    Calculer(Moy,Dc,Ds,n);
    Afficher(Nom,Prenom,Moy,n);
    end.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 475
    Par défaut
    Pour enfoncer le clou, j'ajouterai qu'une bonne habitude à prendre consiste à donner des noms explicites à ses variables. Quand on relit un programme quelques mois ou quelques années plus tard (ou quand quelqu'un d'autre le relit) Dc, Ds, n , sont autant d'obstacles à la compréhension. le temps perdu est négligeable (surtout avec l'auto-complétion) et le temps gagné est potentiellement immense.

  4. #4
    Expert confirmé

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

    Puisqu'on s'amuse à taper sur les clous pour mieux les enfoncer :

    Soigner la présentation du programme (indentation, aérer, commentaires ...).

    Comme pour les noms explicites, on perd peu de temps à le faire, et on en gagne beaucoup pour la relecture/maintenance.

    Un exemple de présentation (sans commentaires, ce n'est pas mon boulot).

    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
    59
    60
    61
    program ex;
     
    uses wincrt;
     
    type 
      T1 = array[1..90] of string[20];
      T2 = array[1..90] of Real;
    var
      Nom, Prenom: T1;
      dc, ds, Moy: T2;
      n: Integer;
     
    procedure remplir(var N, P: T1; var S, C: T2; x: Integer);
    var 
      i: Integer;
    begin
      for i := 1 to x do
      begin
        Writeln('donner le nom de l''élève N° ', i); 
        Readln(N[i]);
        Writeln('donner le prénom de l''élève N° ', i); 
        Readln(P[i]);
        Writeln('donner la note du devoir de controle');
        Readln(C[i]);
        Writeln('donner la note du devoir de synthèse');
        Readln(S[i]);
      end;
    end;
     
    function Moyenne(c1, s1: T2; j: Integer): Real;
    begin
      Moyenne := (c1[j] + 2 * s1[j]) / 3;
    end;
     
    procedure calculer(var M: T2; C, S: T2; x: Integer);
    var 
      i: Integer;
    begin
      for i := 1 to x do
      begin
        M[i] := Moyenne(c, s, i);
      end;
    end;
     
    procedure afficher(N, P: T1; M: T2; x: Integer);
    var 
      i: Integer;
    begin
      for i := 1 to x do
        Writeln('l''élève ', N[i], ' ', P[i], ' a une moyenne ', M[i]: 5: 2);
    end;
     
    begin
      repeat
        Writeln('donner n '); 
        Readln(n);
      until (n > 0);
      Remplir(Nom, Prenom, Dc, Ds, n);
      Calculer(Dc, Ds, Moy, n);
      Afficher(Nom, Prenom, Moy, n);
    end.

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Par défaut
    Merci beaucoup, pb résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de passage des paramétrés aux entity Beans
    Par herguem dans le forum Java EE
    Réponses: 1
    Dernier message: 07/06/2012, 14h13
  2. problème avec passage des paramètres
    Par soumti84 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 03/08/2009, 12h03
  3. Réponses: 2
    Dernier message: 23/05/2008, 15h06
  4. Réponses: 9
    Dernier message: 13/05/2005, 03h13
  5. problème de passage de paramêtre sous mozilla
    Par mat10000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/09/2004, 10h48

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