Programmation Pascal, erreur
Répondre à la discussion
Affichage des résultats 1 à 28 sur 28

Programmation Pascal, erreur



  1. #1
    invite2c048134

    Question Programmation Pascal, erreur


    ------

    Bonjour, voilà mon programme en pascal, cependant quand je veux le compiler :
    "calc_fraction.pas (38.2) Error : Wrong number of parameters specified for call to 'affichage'
    calc_fraction.pas (42) : There were 1 errors compiling module, stopping ..." etc etc, voilà mon programme, je pense que l'erreur vient de mult / affichage, quelque chose comme ça car sans le mult mon programme fonctionne correctement.
    Alors pouvez-vous m'aider à trouver cette erreur svp ?
    Code:
    program calc_fraction ;
    
    type fraction = record
            num, den : integer ;
    end;
    
    procedure saisie (var f, ff : fraction) ;
    	begin
    		write ('Numerateur premiere fraction ?') ;
    		readln (f.num) ;
    		write ('Denominateur premiere fraction ?') ;
    		readln (f.den) ;
    		write ('Numerateur deuxieme fraction ?') ;
    		readln (ff.num) ;
    		write ('Denominateur deuxieme fraction ?') ;
    		readln (ff.den) ;
    	end ;
    
    procedure affichage ( var f, ff : fraction) ;
    	begin
    		write (f.num, '/', f.den) ;
    		write ('et') ;
    		writeln (ff.num, '/', ff.den) ;
    	end ;
    
    function mult (f : fraction ; ff : fraction) : fraction ;
    	begin
    		mult.num := f.num * ff.num ;
    		mult.den := f.den * ff.den ;
    	end ;
    
    var f, ff : fraction ;
    begin
    	saisie (f, ff) ;
    	write ('Fractions saisies :') ;
    	affichage (f, ff) ;
    	write ('Produit :') ;
    	affichage (mult(f, ff)) ;
    	readln ;
    end.

    -----
    Dernière modification par Jack ; 18/01/2014 à 10h51. Motif: Ajout balises code

  2. #2
    danyvio

    Re : Programmation Pascal, erreur

    Il y a longtemps que j'ai oublié Pascal, mais la ligne :
    function mult (f : fraction ; ff : fraction) : fraction ;

    me semble comporter à tort un ; au lieu de ,
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  3. #3
    invite2c048134

    Re : Programmation Pascal, erreur

    Merci d'avoir tenté de m'aider mais apparemment le problème ne viendrait pas d'ici...

  4. #4
    invitecba2e9e4

    Re : Programmation Pascal, erreur

    hello

    "calc_fraction.pas (38.2) Error : Wrong number of parameters specified for call to 'affichage'
    le compilo te dit ca vient d'"affichage", donc regarde soit l'implem d'affichage, soit la facon dont tu l'appèles.
    Tu l'appeles avec deux arguments: affichage(f,ff)

    Dans ton code
    Code:
    procedure affichage ( var f, ff : fraction) ;
    je suis un peu étranger à cette syntaxe.
    pourquoi ne pas écrire
    Code:
    procedure affichage ( f:fraction, ff : fraction) ;
    ?

  5. A voir en vidéo sur Futura
  6. #5
    invite2c048134

    Re : Programmation Pascal, erreur

    Bonjour, encore une fois le problème ne vient pas de là...
    Je pense plutôt que ça vient de function mult, ou de l'affichage de mult dans le programme principal mais je reste bloqué...

  7. #6
    invitecba2e9e4

    Re : Programmation Pascal, erreur

    eh ben relis au lieu de réfuter préemptoirement!!!

    le compilo te dit ca vient d'"affichage", donc regarde soit l'implem d'affichage, soit la facon dont tu l'appèles.
    Code:
    affichage (f, ff) ; // on compte... 2 arguments.
    write ('Produit :') ;
    affichage (mult(f, ff)) ; //on compte... 1 argument
    PS:Quand tu dis le problème vient pas de là, il faut dire >pourquoi<. Qu'as-tu testé, quelles ont été les erreurs.
    PS2: tu noteras également que le compilateur t'indiques la ligne de l'erreur..

  8. #7
    bisou10

    Re : Programmation Pascal, erreur

    Sérieux, pourquoi demander de l'aide si tu n'écoutes pas ?!

  9. #8
    invite2c048134

    Re : Programmation Pascal, erreur

    Quand je dis que le problème ne vient pas de là, (là étant la correction qui m'a été proposée), c'est que j'ai corrigé mon programme avec votre correction et que j'ai retenté de le compiler, mais que la compilation ne fonctionne toujours pas. Cela me paraissait logique excusez-moi

  10. #9
    invite2c048134

    Re : Programmation Pascal, erreur

    Du coup je n'arrive pas à mettre les deux paramètres
    affichage (mult (f), mult (ff)) ;
    ne fonctionne pas non plus,
    pourtant dans mon cours j'avais bien affichage (mult (f, ff)) ; ....

  11. #10
    invitecba2e9e4

    Re : Programmation Pascal, erreur

    PS:Quand tu dis le problème vient pas de là, il faut dire >pourquoi<. Qu'as-tu testé, quelles ont été les erreurs.
    affichage (mult (f), mult (ff)) ;
    ne fonctionne pas non plus,
    je pense que ton principal problème vient du fait que tu lis très très mal.
    Tu rates pas mal d'informations.
    De la part de nos interventions, de la part du compilateur.
    Et peut-etre même de la part du cours :-/ (si tant est que le cours ait définit la méthode affichage..)

  12. #11
    invite2c048134

    Re : Programmation Pascal, erreur

    Quand je fais ton
    procedure affichage ( f : fraction, ff : fraction ) ;
    l'interpréteur de cmd me dit concernant cette ligne : "Syntax error, ")" expected but "," found"

  13. #12
    bisou10

    Re : Programmation Pascal, erreur

    Reprenons, si tu veux bien. Désolé, ca va être un brin, heu, pédagogique ?

    est ce que tu comprends ce qu'est ton type fraction ?
    -> donc ?

    est ce que tu connais la différence entre une procedure et une function ?
    -> j'attends ta réponse !

    c'est quoi mult() ? quels sont ses arguments, et pourquoi c'est une function ?
    -> à toi !

    c'est quoi affichage() ? quels sont ses arguments, et pourquoi c'est une procédure ?
    -> et ?

    En réalité, l'erreur est trés simple, et si une partie fonctionne, c'est parce que tu as de la 'chance'.

    Bon courage !

  14. #13
    invite2c048134

    Re : Programmation Pascal, erreur

    Mais l'erreur vient bien de la ligne
    affichage (mult (f,ff)) ;
    parce que si je l'enlève le programme se compile sans soucis..

  15. #14
    invite2c048134

    Re : Programmation Pascal, erreur

    Le type fraction c'est mon enregistrement avec num et den qui sont des entiers (numera, denominateur)

    après la procedure est un sous-programme tout comme la fonction mais la procédure est directement utilisé dans le programme principal

    mult c'est la fonction qui permet de faire le produit des deux fractions f et ff

    affichage c'est la procedure qui permet d'afficher mes deux fractions


    PS : Je viens d'intégrer la fac de sciences cette semaine suite à une réorientation, alors comprenez bien qu'ayant loupé un semestre d'algorithmique je me dois d'avancer assez rapidement pour rattraper tout ce retard et de comprendre ce que je fais

  16. #15
    Jack
    Modérateur

    Re : Programmation Pascal, erreur

    Merci de penser à utiliser les balises codes comme c'est clairement indiqué dans les règles du forum:
    http://forums.futura-sciences.com/programmation-langages-algorithmique/441632-regles-participatives-nouveau-forum.html

  17. #16
    invite2c048134

    Re : Programmation Pascal, erreur

    Mon problème est urgent, j'aimerais quand même obtenir la réponse s'il-vous-plaît avec des explications évidemment, mais je n'ai en aucun le temps de m'attarder aussi longtemps sur toutes les erreurs que je rencontre, sinon je n'aurais jamais fini à temps, alors est-ce que quelqu'un peut m'aider oui ou non svp ?

  18. #17
    Jack
    Modérateur

    Re : Programmation Pascal, erreur

    Pourquoi ne pas republier le code mis à jour? Ca permettrait de ne pas se disperser par rapport aux différentes versions issue des modifications apportées.

  19. #18
    invite2c048134

    Re : Programmation Pascal, erreur

    Code:
    program calc_fraction ;
    
    type fraction = record
    	num, den : integer ;
    end;
    
    procedure saisie (var f, ff : fraction) ;
    	begin
    		write ('Numerateur premiere fraction ?') ;
    		readln (f.num) ;
    		write ('Denominateur premiere fraction ?') ;
    		readln (f.den) ;
    		write ('Numerateur deuxieme fraction ?') ;
    		readln (ff.num) ;
    		write ('Denominateur deuxieme fraction ?') ;
    		readln (ff.den) ;
    	end ;
    
    procedure affichage ( f, ff : fraction ) ;
    	begin
    		write (f.num, '/', f.den) ;
    		write ('et') ;
    		writeln (ff.num, '/', ff.den) ;
    	end ;
    
    function mult (f, ff : fraction) : fraction ;
    	begin
    		mult.num := f.num * ff.num ;
    		mult.den := f.den * ff.den ;
    	end ;
    
    var f, ff : fraction ;
    begin
    	saisie (f, ff) ;
    	write ('Fractions saisies :') ;
    	affichage (f, ff) ;
    	write ('Produit :');
    	affichage (mult (f, ff));
    	readln ;
    end.
    Voilà le programme, la ligne étant la ligne qui je pense pose problème dans la mesure où si je la supprime le programme se compile, en revanche si je la laisse le programme ne veut pas se compiler et l'interpréteur de cmd me dit "Wrong number of parameters specified for call to 'affichage'"..
    Mais j'ai besoin d'afficher la function mult, qui effectue le produit de f et ff

  20. #19
    invitecba2e9e4

    Re : Programmation Pascal, erreur

    mais je n'ai en aucun le temps de m'attarder aussi longtemps sur toutes les erreurs que je rencontre, sinon je n'aurais jamais fini à temps, alors est-ce que quelqu'un peut m'aider oui ou non svp ?
    Je trouve déjà particulièrement stupide, dans une phase d'apprentissage, d'ignorer les erreurs et de ne pas chercher à les comprendre.
    Je t'ai déjà expliqué pourquoi ca marche pas, mais vraisemblablement tu lis une ligne sur deux. Au lieu de stresser stupidement, tu te serais rendu compte que ton nombre d'arguments, comme indiqué par le compilateur n'est pas bon. (ca ne fait que la TROISIEME fois)

    De manière générale, non seulement tu n'es pas sûr qu'en baclant ton travail tu auras de meilleurs résultats (idem en codant sans comprendre), mais en plus tu n'es pas sûr non plus de rattraper ton retard de cette manière.
    De ce point de vue là, choisir entre la note (peut etre) et des bonnes bases, il faudrait que tu te poses cette question.

  21. #20
    invite2c048134

    Re : Programmation Pascal, erreur

    Et bien toi non plus tu ne sais pas lire
    Ensuite, tu m'as dit d'où venait le problème, les arguments ok, et moi je t'ai dit que je ne savais comment corriger cette erreur.
    On apporte de l'aide sur ce forum, j'ai besoin d'avancer et tu ne m'apportes rien si ce n'est des questions supplémentaires. J'ai aussi dit que j'avais besoin d'une réponse "avec explications". Je n'ai jamais dit vouloir bâcler quoique ce soit. Je travaille la question depuis hier, fin d'après-midi, de plus étant ancien étudiant en médecine et ayant travaillé 12h par jour pendant tout un semestre, j'estime, qui que tu sois, n'avoir aucune leçon de morale à recevoir de toi.
    Cordialement, j'irai chercher de l'aide ailleurs si je ne trouve pas ce que je veux sur ce forum.

    (Et évite de rendre un problème ennuyeux et difficile à des gens, encore plus difficile et ennuyeux qu'il ne l'était.)

  22. #21
    invite2c048134

    Problème de programmation en pascal

    Bonjour, voilà un programme qui permet de saisir deux fraction f et ff, et ensuite je dois faire la fonction mult qui calcule leur produit. Cependant je n'arrive pas à insérer correctement l'affichage de cette fonction dans le programme principal. Voici donc le programme, avec la ligne rouge qui correspond à la partie du programme qui empêche la compilation (message d'erreur sur l'interpréteur de commandes : "Wrong numbers of parameters specified for call to 'affichage'"

    Code:
    program calc_fraction ;
    
    type fraction = record
    	num, den : integer ;
    end;
    
    procedure saisie (var f, ff : fraction) ;
    	begin
    		write ('Numerateur premiere fraction ?') ;
    		readln (f.num) ;
    		write ('Denominateur premiere fraction ?') ;
    		readln (f.den) ;
    		write ('Numerateur deuxieme fraction ?') ;
    		readln (ff.num) ;
    		write ('Denominateur deuxieme fraction ?') ;
    		readln (ff.den) ;
    	end ;
    
    procedure affichage ( f, ff : fraction ) ;
    	begin
    		write (f.num, '/', f.den) ;
    		write ('et') ;
    		writeln (ff.num, '/', ff.den) ;
    	end ;
    
    function mult (f, ff : fraction) : fraction ;
    	begin
    		mult.num := f.num * ff.num ;
    		mult.den := f.den * ff.den ;
    	end ;
    
    var f, ff : fraction ;
    begin
    	saisie (f, ff) ;
    	write ('Fractions saisies :') ;
    	affichage (f, ff) ;
    	write ('Produit :');
    	affichage (mult (f, ff));
    	readln ;
    end.
    Le programme se compile très bien si je supprime cette ligne.
    Merci d'avance pour l'aide que vous pourrez m'apporter

  23. #22
    Jack
    Modérateur

    Re : Problème de programmation en pascal

    Ca commence à devenir agaçant. Je te rappelle que tu as lu et accepté la charte. Les doublons sont INTERDITS. Inutile donc d'ouvrir une nouvelle discussion sur le même sujet. J'ai fusionné pour cette fois.
    Dernière modification par Jack ; 18/01/2014 à 12h50.

  24. #23
    invitecba2e9e4

    Re : Problème de programmation en pascal

    Je vais faire un topo très simple pour te montrer que sans le savoir ou pas, t'es complètement brouillon.

    Tu arrives avec un problème une erreur de compilation et un code, très bien, rien à reprocher.

    Derrière danyvio te suggère une erreur de syntaxe, que tu réfutes (sans montrer que tu as essayé ce qu'il t'a suggéré)
    Je te conseille également de revoir une erreur de syntaxe et l'arité de ta fonction affichage

    Tu réfutes (une nouvelle fois sans montrer les erreurs que tu obtiens).

    J'insiste en te demandant de montrer les erreurs que tu obtiens avec les changements que tu as fait.
    Tu nous indiques que tu as corrigé le programme, mais on sait pas comment. Et toujours pas de message d'erreur.

    Poste de 11h27, on avance, tu as tenté de respecter l'arité de affichage
    affichage(mult(f),mult(ff)) prend bien deux arguments comme l'exige son prototype, mais toujours pas de message d'erreur...

    Poste de 11h46, une erreur de syntaxe, (c'est bien tu as copié l'erreur.) mais si tu avais lu le poste de danyvio tu te serais probablement rendu compte de la virgule (encore une fois précisée par le compilateur)

    Donc
    1) Ta méthodologie est mauvaise. (je ne parle pas en tant que professeur, mais avec un tout petit peu d'expérience..)
    Normalement, tu procèdes ainsi:
    - trouver l'erreur (jusqu'à là c'est pas mal, t'as trouvé la ligne..)
    - comprendre l'erreur
    * Que dit mon compilateur/Quel est le résultat attendu
    * Ici t'as une erreur du compilateur, donc c'est assez évident
    Ici, il te dit nombre d'arguments blabla, donc tu regardes à la ligne 38, et tu regardes ce que tu passes à affichage.
    Tu lui passes un argument, alors qu'affichage en attend deux.
    Jusque là je pense que t'as compris.

    Donc tu corriges avec un exemple simple. Par exemple
    Code:
    37: fraction f;
    38: affichage(f,f);
    Et tu regardes que ton erreur de syntaxe est fixée.
    Une fois seulement, tu tentes d'utiliser mult(f,ff)
    Code:
    37: fraction fResultat = mult(f,ff);
    38: affichage(fResultat, fResultat);
    Maintenant, pour une raison quelconque si tu es bloqué, il faut >absolument<:
    - montrer ton code (le plus simple possible)
    - ce que tu attend de ce morceau de code
    - l'erreur que tu obtiens (il peut s'agir d'une erreur de compilateur comme ici) ou d'un résultat qui te semble faux.

    Sinon tu te prends des réponses d'autistes comme celles que je t'ai gratifiées

    2) Pour poursuivre l'erreur de la ligne 38, que doit faire la fonction affichage. Afficher une fraction? ou afficher deux fractions?

    PS: peut importe ton passé, ce que je vois, c'est que tu survoles. Si c'est pas le cas...prouves le!

  25. #24
    invite2c048134

    Re : Programmation Pascal, erreur

    La ligne 38
    Code:
    affichage (mult (f, ff));
    est censée afficher le produit des deux fraction f et ff, la fonction mult étant
    Code:
    function mult (f, ff : fraction) : fraction ;
    begin
    mult.num := f.num * ff.num ;
    mult.den := f.den * ff.den ;
    end;
    et la procedure affichage était
    Code:
    procedure affichage (f, ff : fraction) ;
    begin
    write (f.num, '/', f.den);
    write ('et');
    write (ff.num, '/', ff.den);
    writeln ('.');

  26. #25
    invitecba2e9e4

    Re : Programmation Pascal, erreur

    je ne t'ai pas demandé ce que doit faire la ligne 38. Je t'ai demandé ce que dois faire la procedure affichage.

  27. #26
    invite2c048134

    Re : Programmation Pascal, erreur

    La procedure affichage a pour but d'afficher mes deux fractions, et comme ensuite je dis que mult est le produit de mes deux fractions, logiquement l'affichage de mult devrait m'afficher le produit de ces deux dernières

  28. #27
    invitecba2e9e4

    Re : Programmation Pascal, erreur

    La procedure affichage a pour but d'afficher mes deux fractions
    Dans ce cas là tu n'as pas besoin de mult.

    logiquement l'affichage de mult devrait m'afficher le produit de ces deux dernières
    non. Tu as dit toi même que Affichage affiche deux fractions.
    mult te retourne une seule fraction. (un produit de fraction donne une fraction)

  29. #28
    bisou10

    Re : Programmation Pascal, erreur

    Citation Envoyé par Moresby Voir le message
    Le type fraction c'est mon enregistrement avec num et den qui sont des entiers (numera, denominateur)
    Ok

    Citation Envoyé par Moresby Voir le message
    après la procedure est un sous-programme tout comme la fonction mais la procédure est directement utilisé dans le programme principal
    Non, tu DOIS savoir quelle est la différence fondamentale entre procedure et function.

    Citation Envoyé par Moresby Voir le message
    mult c'est la fonction qui permet de faire le produit des deux fractions f et ff

    affichage c'est la procedure qui permet d'afficher mes deux fractions
    Cf mon commentaire au dessus.
    Quand tu auras compris ca, on passera à la phase suivante: "Les paramètres: a quoi ca sert, comment ca marche".

    Citation Envoyé par Moresby Voir le message
    PS : Je viens d'intégrer la fac de sciences cette semaine suite à une réorientation, alors comprenez bien qu'ayant loupé un semestre d'algorithmique je me dois d'avancer assez rapidement pour rattraper tout ce retard et de comprendre ce que je fais
    Et bien, il me semble qu'on y travaille, parceque pour l'instant, non, tu ne comprends manifestement pas ce que tu fais

Discussions similaires

  1. Programmation en pascal
    Par invite7eebda28 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 04/12/2012, 22h15
  2. trés urgent; programmation pascal
    Par invite39a3aa53 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 02/02/2011, 14h34
  3. algorithme-programmation en Pascal-urgent svp
    Par invite39a3aa53 dans le forum Programmation et langages, Algorithmique
    Réponses: 25
    Dernier message: 23/12/2010, 17h38
  4. Problème lors de la programmation d'un PIC en Pascal
    Par invitedf66cb3b dans le forum Électronique
    Réponses: 10
    Dernier message: 16/12/2010, 14h45
  5. Programmation Pascal
    Par inviteb2b9e8eb dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 05/10/2007, 15h00