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

Autres IDE Pascal Discussion :

Triangle de Pascal : "wrong amount of parameters specified"


Sujet :

Autres IDE Pascal

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Triangle de Pascal : "wrong amount of parameters specified"
    Bonjour,

    Je suis en train de faire un exercice en Pascal qui me demande de calculer le triangle de Pascal de dimension N (Définie par l'utilisateur) et en utilisant une procédure calcul(Triang) et une procédure Affichage(Triang). Etant débutant avec les procédures, j'ai encore un peu de mal à avoir le truc, du coup j'ai du mal à corriger mes erreurs.

    Voici ce que j'ai fait :

    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
    Program Exo4TP9;
     
    Const Nmax=25;
     
    TYPE tableau=array [1..Nmax,1..Nmax] of integer;
     
    PROCEDURE calcul(VAR N:integer);
    VAR c,l :integer;
        Triang:tableau;
     
    Begin
     
    Triang[1,1]:=1;
    for l := 2 to N do
       begin
        Triang[l,1]:=1;
        for c := 1 to l-1 do
          Triang[l,c]:=Triang[l-1,c]+Triang[l-1,c-1];
          Triang[l,l]:=1;
       end;
    End;
     
    PROCEDURE Affichage(N:integer ; Triangl:tableau);
    VAR l,c:integer;
     
              Begin
                  for l := 1 to N do
                  begin
                    for c := 1 to l do
                      write(Triangl[l,c],' ');
                      writeln('');
                  end;
    End;
     
    VAR NC:integer;
     
    Begin
    Writeln('Saisir N');
    Readln(NC);
     
    calcul(NC);
    Affichage(NC);
     
    readln;
     
    END.
    Mais en compilant j'obtient cette erreur : 42 / 11 Error: Wrong amount of parameters specified

    J'ai donc essayé de faire une modification dans ma deuxième procédure :

    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
    Program Exo4TP9;
     
    Const Nmax=25;
     
    TYPE tableau=array [1..Nmax,1..Nmax] of integer;
     
    PROCEDURE calcul(VAR N:integer);
    VAR c,l :integer;
        Triang:tableau;
     
    Begin
     
    Triang[1,1]:=1;
    for l := 2 to N do
       begin
        Triang[l,1]:=1;
        for c := 1 to l-1 do
          Triang[l,c]:=Triang[l-1,c]+Triang[l-1,c-1];
          Triang[l,l]:=1;
       end;
    End;
     
    PROCEDURE Affichage(N:integer);
    VAR l,c:integer;
        Triang:tableau;
     
              Begin
                  for l := 1 to N do
                  begin
                    for c := 1 to l do
                      write(Triang[l,c],' ');
                      writeln('');
                  end;
    End;
     
    VAR NC:integer;
     
    Begin
    Writeln('Saisir N');
    Readln(NC);
    calcul(NC);
    Affichage(NC);
     
    readln;
     
    END.
    Je n'ai plus d'erreur cette fois-ci mais un avertissement : 31 / 41 Warning: Local variable TRIANG does not seem to be initialized

    Et quand je le lance j'obtiens ce résultat :
    Nom : 2a7460a50ef44555847ea641429b7194.png
Affichages : 292
Taille : 1,5 Ko

    J'aurais besoin de votre aide car je n'arrive pas à trouver le problème.

    Merci d'avance.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,

    Tu cherches à afficher les données d'une variable locale, qui n'est pas initialisée.

    Ta première version était meilleure, car tu passais le tableau à ta procédure, ce que tu avais quelque peu oublié en route.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par droggo Voir le message
    Bonjour,

    Tu cherches à afficher les données d'une variable locale, qui n'est pas initialisée.

    Ta première version était meilleure, car tu passais le tableau à ta procédure, ce que tu avais quelque peu oublié en route.
    Bonjour,

    J'ai essayé de modifier quelques trucs, j'obtiens bien un triangle mais cette fois-ci composé uniquement de 0 :

    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
    Program Exo4TP9;
     
    Const Nmax=25;
     
    TYPE tableau=array [1..Nmax,1..Nmax] of integer;
     
    PROCEDURE calcul(VAR N:integer);
    VAR c,l:integer;
        triang:tableau;
     
    Begin
    Writeln('Saisir N');
    Readln(N);
     
    Triang[1,1]:=1;
    for l := 2 to N do
       begin
        Triang[l,1]:=1;
        for c := 1 to l-1 do
          Triang[l,c]:=Triang[l-1,c]+Triang[l-1,c-1];
          Triang[l,l]:=1;
       end;
    End;
     
    PROCEDURE Affichage(N:integer; triang:tableau);
    VAR l,c:integer;
     
              Begin
                  for l := 1 to N do
                  begin
                    for c := 1 to l do
                      write(Triang[l,c],' ');
                      writeln('');
                  end;
    End;
     
    VAR NC:integer;
        triangl:tableau;
     
    Begin
     
    calcul(NC);
    Affichage(NC,triangl);
     
    readln;
     
    END.
    J'obtiens toujours le même problème : 43 / 10 Warning: Variable TRIANGL does not seem to be initialized

    Mais je ne sais pas comment en venir à bout

    Peut-être auriez-vous un tuto sur les procédures qui pourrait me permettre de mieux comprendre mon erreur ? (J'ai déjà essayé de comprendre avec celui-ci, mais sans succès).

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 070
    Points : 15 457
    Points
    15 457
    Billets dans le blog
    9
    Par défaut
    Bonsoir !

    Après une première lecture, voici les modifications qui me paraissent nécessaires :

    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
     
    Program Exo4TP9;
     
    Const Nmax=25;
     
    TYPE tableau=array [1..Nmax,1..Nmax] of integer;
     
    //PROCEDURE calcul(VAR N:integer);
    PROCEDURE calcul(CONST N:integer; VAR triang: tableau);
    VAR c,l:integer;
        //triang:tableau;
     
    Begin
    //Writeln('Saisir N');
    //Readln(N);
     
    Triang[1,1]:=1;
    for l := 2 to N do
       begin
        Triang[l,1]:=1;
        for c := 1 to l-1 do
          Triang[l,c]:=Triang[l-1,c]+Triang[l-1,c-1];
          Triang[l,l]:=1;
       end;
    End;
     
    //PROCEDURE Affichage(N:integer; triang:tableau);
    PROCEDURE Affichage(CONST N:integer; CONST triang:tableau);
    VAR l,c:integer;
     
              Begin
                  for l := 1 to N do
                  begin
                    for c := 1 to l do
                      write(Triang[l,c],' ');
                      writeln('');
                  end;
    End;
     
    VAR NC:integer;
        triangl:tableau;
     
    Begin
     
    //calcul(NC);
    Writeln('Saisir N');
    Readln(NC);
    calcul(NC,triangl);
    Affichage(NC,triangl);
     
    readln;
     
    END.
    Je n'ai pas testé le programme. Mais il n'y a plus d'avertissement à la compilation.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue,

    Citation Envoyé par Bloudon Voir le message
    Peut-être auriez-vous un tuto sur les procédures qui pourrait me permettre de mieux comprendre mon erreur ?
    Celui-ci est très détaillé : http://lazarus.developpez.com/cours/...pg_02#LIII-B-4.
    Il traite des procédures et fonctions, des paramètres, de la portée des variables, etc.

    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Bonsoir !

    Après une première lecture, voici les modifications qui me paraissent nécessaires :

    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
     
    Program Exo4TP9;
     
    Const Nmax=25;
     
    TYPE tableau=array [1..Nmax,1..Nmax] of integer;
     
    //PROCEDURE calcul(VAR N:integer);
    PROCEDURE calcul(CONST N:integer; VAR triang: tableau);
    VAR c,l:integer;
        //triang:tableau;
     
    Begin
    //Writeln('Saisir N');
    //Readln(N);
     
    Triang[1,1]:=1;
    for l := 2 to N do
       begin
        Triang[l,1]:=1;
        for c := 1 to l-1 do
          Triang[l,c]:=Triang[l-1,c]+Triang[l-1,c-1];
          Triang[l,l]:=1;
       end;
    End;
     
    //PROCEDURE Affichage(N:integer; triang:tableau);
    PROCEDURE Affichage(CONST N:integer; CONST triang:tableau);
    VAR l,c:integer;
     
              Begin
                  for l := 1 to N do
                  begin
                    for c := 1 to l do
                      write(Triang[l,c],' ');
                      writeln('');
                  end;
    End;
     
    VAR NC:integer;
        triangl:tableau;
     
    Begin
     
    //calcul(NC);
    Writeln('Saisir N');
    Readln(NC);
    calcul(NC,triangl);
    Affichage(NC,triangl);
     
    readln;
     
    END.
    Je n'ai pas testé le programme. Mais il n'y a plus d'avertissement à la compilation.
    Merci beaucoup pour cette aide !

    Citation Envoyé par Alcatîz Voir le message
    Bonjour et bienvenue,


    Celui-ci est très détaillé : http://lazarus.developpez.com/cours/...pg_02#LIII-B-4.
    Il traite des procédures et fonctions, des paramètres, de la portée des variables, etc.

    Merci beaucoup pour ce tutoriel, je le trouve excellent

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 070
    Points : 15 457
    Points
    15 457
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Bloudon Voir le message
    Merci beaucoup pour cette aide !
    Pas de quoi.

    Un dernier petit truc pour améliorer l'affichage du triangle :

    7 étant la largeur du plus grand nombre obtenu lorsque NC égale Nmax.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Pas de quoi.

    Un dernier petit truc pour améliorer l'affichage du triangle :

    7 étant la largeur du plus grand nombre obtenu lorsque NC égale Nmax.
    Je ne savais pas que l'on pouvait faire cela, merci beaucoup.

Discussions similaires

  1. Affichage du Triangle de Pascal
    Par jrosenzw dans le forum C++
    Réponses: 11
    Dernier message: 14/03/2009, 03h10
  2. Triangle de pascal
    Par koko03 dans le forum Mathématiques
    Réponses: 3
    Dernier message: 26/01/2009, 17h52
  3. triangle de pascal
    Par chouuc dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 20/01/2009, 01h36
  4. Triangle de Pascal
    Par WhiteTigerZ dans le forum Pascal
    Réponses: 5
    Dernier message: 09/03/2007, 19h47
  5. Triangle de Pascal
    Par yushkoya dans le forum VBScript
    Réponses: 6
    Dernier message: 11/07/2006, 14h18

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