Demande d'aide pour programme en C
Résolu
Dumouth
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Dumouth Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Dumouth Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Voila, je dois faire un petit programme en C pour mes cours, j'utilise Dev C++ mais j'avoue que j'ai quelques soucis.
Premièrement je voudrais savoir si mon utilisation du type Booléen est correcte.
En suite quand je compile mon programme le logiciel me dit que dans mon sous-programme mini par exemple j est une variable non déclarée alors qu'elle est passée par valeur et que ma variable res n'est pas non plus déclarée alors qu'elle l'est en debut du sous-programme.
Programme :
#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;
printf("Choisissez une fonction :\n 1 pour minimum\n 2 pour maximum\n 3 pour multiple\n 0 pour sortir\n Votre choix?\n");
scanf("%d",&n);
do
{
switch (n)
{
case 0 :
printf("Aurevoir\n");
break;
case 1 :
printf("Entrez votre premier nombre :\n");
scanf("%d",&a);
printf("Entrez votre second nombre :\n");
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 :\n");
scanf("%d",&a);
printf("Entrez votre second nombre :\n");
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 :\n");
scanf("%d",&a);
printf("Entrez votre second nombre :\n");
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");
break;
}
printf("Voulez-vous refaire un calcul? (o/n)\n");
scanf("%c",&rec);
while (rec != n);
system("pause");
}
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;
}
Merci d'avance du coup de main.
Voila, je dois faire un petit programme en C pour mes cours, j'utilise Dev C++ mais j'avoue que j'ai quelques soucis.
Premièrement je voudrais savoir si mon utilisation du type Booléen est correcte.
En suite quand je compile mon programme le logiciel me dit que dans mon sous-programme mini par exemple j est une variable non déclarée alors qu'elle est passée par valeur et que ma variable res n'est pas non plus déclarée alors qu'elle l'est en debut du sous-programme.
Programme :
#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;
printf("Choisissez une fonction :\n 1 pour minimum\n 2 pour maximum\n 3 pour multiple\n 0 pour sortir\n Votre choix?\n");
scanf("%d",&n);
do
{
switch (n)
{
case 0 :
printf("Aurevoir\n");
break;
case 1 :
printf("Entrez votre premier nombre :\n");
scanf("%d",&a);
printf("Entrez votre second nombre :\n");
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 :\n");
scanf("%d",&a);
printf("Entrez votre second nombre :\n");
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 :\n");
scanf("%d",&a);
printf("Entrez votre second nombre :\n");
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");
break;
}
printf("Voulez-vous refaire un calcul? (o/n)\n");
scanf("%c",&rec);
while (rec != n);
system("pause");
}
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;
}
Merci d'avance du coup de main.
A voir également:
- Demande d'aide pour programme en C
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
10 réponses
Salut,
Il manque l'accolade fermante de ton do ... while.
Je regarde pour les autres erreurs...
Il manque l'accolade fermante de ton do ... while.
Je regarde pour les autres erreurs...
Dumouth
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
Ah oui pas faux
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);
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 ;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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; }
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
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.