[C] l'appel des procedures et des fonction
Fermé
xmaster2216
-
3 févr. 2010 à 13:22
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 4 févr. 2010 à 08:57
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 4 févr. 2010 à 08:57
A voir également:
- [C] l'appel des procedures et des fonction
- Fonction si et - Guide
- Appel anonyme - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Fonction moyenne excel - Guide
- Appel annulé iphone - Forum Mobile
2 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
3 févr. 2010 à 14:42
3 févr. 2010 à 14:42
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.
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
3 févr. 2010 à 18:14
3 févr. 2010 à 18:14
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 ...
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 févr. 2010 à 08:30
4 févr. 2010 à 08:30
et puis, les références en C, je crois que ça n'existe pas... (introduit avec le C++)
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
>
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
4 févr. 2010 à 08:57
4 févr. 2010 à 08:57
c'est probable... c'est surement ce qui explique que le scanf ne les utilise pas ! De plus, pour ma part, j'utilise toujours un compilo C++...