[C] l'appel des procedures et des fonction
xmaster2216
-
Nabla's Messages postés 18203 Date d'inscription Statut Contributeur Dernière intervention -
Nabla's Messages postés 18203 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis debutant en langage c
je veux calculer PGCD de deux entier a l'aide de procedures et de fonction
mais je trouve des probleme pour l'appel des procedures
comment je fait cet appel
voici mon program
#include <stdio.h>
#include <stdlib.h>
int main()
{
void saisir(int a,int b)
{ do
{ printf("a=");
scanf ("%d", &a); }
while (a>0);
do { printf ("b=");
scanf ("%d", &b);
}
while (b>0);
return 0; }
int PGCD (int a, int b)
{ int x, p;
do {x=a;
a=b;
b= x % b; }
while (b==0);
p=a; scanf("%d",p);
return p; }
void affichage (int p)
{ printf ("le PGCD est %d",p);
return 0; }
int main (void)
{
saisir(a,b);
PGCD(p);
affichage(p);
return 0;
}
merci pour repondre
je suis debutant en langage c
je veux calculer PGCD de deux entier a l'aide de procedures et de fonction
mais je trouve des probleme pour l'appel des procedures
comment je fait cet appel
voici mon program
#include <stdio.h>
#include <stdlib.h>
int main()
{
void saisir(int a,int b)
{ do
{ printf("a=");
scanf ("%d", &a); }
while (a>0);
do { printf ("b=");
scanf ("%d", &b);
}
while (b>0);
return 0; }
int PGCD (int a, int b)
{ int x, p;
do {x=a;
a=b;
b= x % b; }
while (b==0);
p=a; scanf("%d",p);
return p; }
void affichage (int p)
{ printf ("le PGCD est %d",p);
return 0; }
int main (void)
{
saisir(a,b);
PGCD(p);
affichage(p);
return 0;
}
merci pour repondre
A voir également:
- [C] l'appel des procedures et des fonction
- Fonction si et - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Appel privé - Guide
- Double appel - Guide
- Comment reecouter un appel sur iphone - Forum Huawei
2 réponses
Les fonctions se définissent en dehors du main(), il n'est pas possible d'en définir l'une dans l'autre.
Il faut définir tes variables.
Il faut définir tes variables.
dans ton programme, tu as 2 main. Ce n'est pas correcte ! (celui de tout en haut doit etre supprimé)
de plus, avec le 2°, les parametres sont passés en copie sur saisir, la fonction PGCD est appellé avec un nombre de parametrse invalide... sans rien tester, voici deja une première vague de corerections:
voila... je sais pas si ca marche, mais ca me semble plus correcte...
pour saisir, j'a fait passer par pointeurs. Il aurrai peut etre mieu valu pour toi faire un passage par references, mais je savais pas comment ca passerait avec les scanf ...
de plus, avec le 2°, les parametres sont passés en copie sur saisir, la fonction PGCD est appellé avec un nombre de parametrse invalide... sans rien tester, voici deja une première vague de corerections:
#include <stdio.h> #include <stdlib.h> void saisir(int* a,int* b) { do { printf("a="); scanf ("%d", a); } while (*a>0); do { printf ("b="); scanf ("%d", b); } while (*b>0); return 0; } int PGCD (int a, int b) { int x, p; do {x=a; a=b; b= x % b; } while (b==0); p=a; scanf("%d",p); return p; } void affichage (int p) { printf ("le PGCD est %d",p); return 0; } int main (void) { int a; //on declare les variables int b; int p; saisir(&a,&b); //on passe l'adresse (et pas une copie sur la pile) p=PGCD(a,b); //on passe les deux valeurs, et on récupère ce qui est envoyé par le return affichage(p); /* //ou: affichage(PGCD(a,b)); */ return 0; }
voila... je sais pas si ca marche, mais ca me semble plus correcte...
pour saisir, j'a fait passer par pointeurs. Il aurrai peut etre mieu valu pour toi faire un passage par references, mais je savais pas comment ca passerait avec les scanf ...