Demande d'aide pour programme en C
Résolu/Fermé
Dumouth
Messages postés
6
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 mars 2009
-
16 mars 2009 à 17:51
Dumouth Messages postés 6 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 16 mars 2009 - 16 mars 2009 à 19:13
Dumouth Messages postés 6 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 16 mars 2009 - 16 mars 2009 à 19:13
A voir également:
- Demande d'aide pour programme en C
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Forcer la fermeture d'un programme - Guide
10 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 mars 2009 à 18:06
16 mars 2009 à 18:06
Salut,
#define VRAI = 1
#define FAUX = 0
il faut mettre
Au lieu de while (rec != n); mets
#define VRAI = 1
#define FAUX = 0
il faut mettre
#define VRAI 1 #define FAUX 0tu as oublié de mettre l'accolade pour fermer la boucle do{ } while(condition);
Au lieu de while (rec != n); mets
}while (rec != n);
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 mars 2009 à 18:08
16 mars 2009 à 18:08
Re,
Avec ces corrections, tu peux recompiler ton programme et tester.
Il y a encore des petites erreurs (surtout le \n qui traîne dans le buffer). Je te laisse découvrir ;-)
Avec ces corrections, tu peux recompiler ton programme et tester.
Il y a encore des petites erreurs (surtout le \n qui traîne dans le buffer). Je te laisse découvrir ;-)
Dumouth
Messages postés
6
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 mars 2009
16 mars 2009 à 18:08
16 mars 2009 à 18:08
Merci ça fonctionne déjà mieux même si c'est pas encore très au point.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dumouth
Messages postés
6
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 mars 2009
16 mars 2009 à 18:21
16 mars 2009 à 18:21
J'ai modifier un peu mon programme mais il foire à l'exécution du sous-programme multiple.
je peux saisir mes variables paramètres mais il ne me retourne pas le résultat. Je pense que c'est les Booléens qui posent problème.
je peux saisir mes variables paramètres mais il ne me retourne pas le résultat. Je pense que c'est les Booléens qui posent problème.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 mars 2009 à 18:39
16 mars 2009 à 18:39
Re,
Essaie ce code (j'ai fait quelques modifications ;-)
Essaie ce code (j'ai fait quelques modifications ;-)
#include <stdio.h> #define VRAI 1 #define FAUX 0 typedef int BOOL; int mini (int i, int j); int maxi (int i, int j); int multiple (int i, int j); int main (void) { int a, b, n; BOOL resultat; char rec = 'o'; while(rec=='o'){ printf ("Choisissez une fonction :\n 1 pour minimum\n 2 pour maximum\n 3 pour multiple\n 0 pour sortir\n Votre choix? "); scanf ("%d", &n); getchar(); switch (n) { case 0: printf ("Aurevoir\n"); return 1; case 1: printf ("Entrez votre premier nombre : "); scanf ("%d", &a); printf ("Entrez votre second nombre : "); scanf ("%d", &b); resultat = mini (a, b); printf ("Le plus petit des deux nombres est : %d.", resultat); break; case 2: printf ("Entrez votre premier nombre : "); scanf ("%d", &a); printf ("Entrez votre second nombre : "); scanf ("%d", &b); resultat = maxi (a, b); printf ("Le plus grand des deux nombres est : %d.\n", resultat); break; case 3: printf ("Entrez votre premier nombre : "); scanf ("%d", &a); printf ("Entrez votre second nombre : "); scanf ("%d", &b); resultat = multiple (a, b); if (resultat == VRAI) printf (" Oui, %d est multiple de %d.\n", a, b); else printf ("Non, %d n'est pas multiple de %d.\n", a, b); break; default: printf ("Veuillez choisir une fonction disponible dans la liste.\n"); return 1; } while(getchar()!='\n'); printf ("\nVoulez-vous refaire un calcul? (o/n) "); scanf ("%c", &rec); } system ("pause"); return 0; } int mini (int i, int j){ int res; if (i < j) res = i; else res = j; return res; } int maxi (int i, int j){ int res; if (i > j) res = i; else res = j; return res; } int multiple (int i, int j){ int r, petit, grand; BOOL res; r = 1; grand = maxi (i, j); petit = mini (i, j); while (r > 0) { grand = maxi (res, petit); petit = mini (res, petit); r = grand - petit; } if (r = 0) res = VRAI; else res = FAUX; return res; }
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 mars 2009 à 18:44
16 mars 2009 à 18:44
Re,
Voici un test.
Ta fonction multiple ne donne pas le bonne résultat.
2291 = 29 x 79
Voici un test.
Ta fonction multiple ne donne pas le bonne résultat.
2291 = 29 x 79
lami20j@debian:~$ gcc fct.c && ./a.out Choisissez une fonction : 1 pour minimum 2 pour maximum 3 pour multiple 0 pour sortir Votre choix? 1 Entrez votre premier nombre : 2 Entrez votre second nombre : 4 Le plus petit des deux nombres est : 2. Voulez-vous refaire un calcul? (o/n) o Choisissez une fonction : 1 pour minimum 2 pour maximum 3 pour multiple 0 pour sortir Votre choix? 2 Entrez votre premier nombre : 10 Entrez votre second nombre : 1000 Le plus grand des deux nombres est : 1000. Voulez-vous refaire un calcul? (o/n) o Choisissez une fonction : 1 pour minimum 2 pour maximum 3 pour multiple 0 pour sortir Votre choix? 3 Entrez votre premier nombre : 2291 Entrez votre second nombre : 79 Non, 2291 n'est pas multiple de 79. Voulez-vous refaire un calcul? (o/n) n lami20j@debian:~$ ./a.out Choisissez une fonction : 1 pour minimum 2 pour maximum 3 pour multiple 0 pour sortir Votre choix? 0 Aurevoir
Dumouth
Messages postés
6
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 mars 2009
16 mars 2009 à 18:48
16 mars 2009 à 18:48
Ah mince, en fin chez moi c'est pire quand j'exécute le programme et que je me sert de la fonction multiple il ne m'affiche pas le résultat..Même avec ta version c'est bizarre.
Wardog
Messages postés
389
Date d'inscription
mercredi 5 octobre 2005
Statut
Membre
Dernière intervention
17 octobre 2009
159
16 mars 2009 à 19:05
16 mars 2009 à 19:05
Essaye sa:
int multiple (int i, int j){ if (i == 0 && j == 0) return VRAI; if (j == 0) return FAUX; if (i % j == 0) return VRAI; return FAUX; }
Dumouth
Messages postés
6
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 mars 2009
16 mars 2009 à 19:13
16 mars 2009 à 19:13
merci j'arrive à passer la 3 ème fonction maintenant :)
16 mars 2009 à 18:04