Probleme dans le code
Résolu
tanguy
-
tanguy -
tanguy -
Bonjour,je souhaiterais de l'aide sur ce code,je ne comprends pas ou est le probleme,quand je le compile avec devc++ il est ecrit qu'il y a une erreur.
Voila le code :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long boucle = 1;
while (boucle == 1)
{
printf("**CALCULATOR**\n\n(effectu une operation sur 2 nombres seulements)\n\n");
printf("===================MENU====================\n\n");
long choix = 0;
printf("1.Addition\n");
printf("2.Soustraction\n");
printf("3.Multiplication\n");
printf("4.Division\n");
printf("5.Quitter\n\n");
printf("===================MENU====================\n\n");
printf("Que veux tu ?\n\n");
scanf("%i",&choix);
if (choix==1)
{
printf("ok ! tu as choisi addition !\n");
long nbr1 = 0;
long nbr2 = 0;
long resultat = 0;
printf("Entre deux nombres entiers :\n");
scanf("%i/n",&nbr1);
scanf("%i/n",&nbr2);
resultat = nbr1 + nbr2;
printf("%i+%i=%i\n",nbr1,nbr2,resultat);
}
if (choix==2)
{
printf("ok ! tu as choisi soustraction !\n");
printf("Entre deux nombres entiers\n(le 2eme entrez le deux fois(en raison d'un bug...) :");
long nbr1 = 0;
long nbr2 = 0;
scanf("%i\n",&nbr1);
scanf("%i\n",&nbr2);
long resultat = nbr1 - nbr2;
printf("%i-%i=%i\n",nbr1,nbr2,resultat);
}
if (choix==3)
{
printf("ok ! tu as choisi multiplication !\n");
long nbr1 = 0;
long nbr2 = 0;
long resultat = 0;
printf("Entre deux nombres entiers :");
scanf("%i*n",&nbr1);
scanf("%i*n",&nbr2);
resultat = nbr1 * nbr2;
printf("%i*%i=%i\n",nbr1,nbr2,resultat);
}
if (choix==4)
{
printf("ok ! tu as choisi division !(le 2eme doit etre plus petit que le premier ou egale)\n");
long nbr1 = 0;
long nbr2 = 0;
long resultat = 0;
printf("Entre deux nombres entiers");
scanf("%i/n",&nbr1);
scanf("%i/n",&nbr2);
resultat = nbr1 / nbr2;
printf("%i/%i=%i\n",nbr1,nbr2,resultat);
}
if (choix==5)
{
printf("ho !tu veux quitter ?\n");
long quitter = 0;
scanf("%i/n",&quitter);
if (quitter=='oui')
{
printf("BY BY BY !a\a\a\\n");
long boucle = 0;
system("PAUSE");
return 0;
}
if (quitter=='non')
{
printf("Good choice ^^");
}
if (choix>=6)
{
printf("ERROR\n");
}
}
Je vous remerci d'avance pour votre reponse,aurevoir et merci.
Voila le code :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long boucle = 1;
while (boucle == 1)
{
printf("**CALCULATOR**\n\n(effectu une operation sur 2 nombres seulements)\n\n");
printf("===================MENU====================\n\n");
long choix = 0;
printf("1.Addition\n");
printf("2.Soustraction\n");
printf("3.Multiplication\n");
printf("4.Division\n");
printf("5.Quitter\n\n");
printf("===================MENU====================\n\n");
printf("Que veux tu ?\n\n");
scanf("%i",&choix);
if (choix==1)
{
printf("ok ! tu as choisi addition !\n");
long nbr1 = 0;
long nbr2 = 0;
long resultat = 0;
printf("Entre deux nombres entiers :\n");
scanf("%i/n",&nbr1);
scanf("%i/n",&nbr2);
resultat = nbr1 + nbr2;
printf("%i+%i=%i\n",nbr1,nbr2,resultat);
}
if (choix==2)
{
printf("ok ! tu as choisi soustraction !\n");
printf("Entre deux nombres entiers\n(le 2eme entrez le deux fois(en raison d'un bug...) :");
long nbr1 = 0;
long nbr2 = 0;
scanf("%i\n",&nbr1);
scanf("%i\n",&nbr2);
long resultat = nbr1 - nbr2;
printf("%i-%i=%i\n",nbr1,nbr2,resultat);
}
if (choix==3)
{
printf("ok ! tu as choisi multiplication !\n");
long nbr1 = 0;
long nbr2 = 0;
long resultat = 0;
printf("Entre deux nombres entiers :");
scanf("%i*n",&nbr1);
scanf("%i*n",&nbr2);
resultat = nbr1 * nbr2;
printf("%i*%i=%i\n",nbr1,nbr2,resultat);
}
if (choix==4)
{
printf("ok ! tu as choisi division !(le 2eme doit etre plus petit que le premier ou egale)\n");
long nbr1 = 0;
long nbr2 = 0;
long resultat = 0;
printf("Entre deux nombres entiers");
scanf("%i/n",&nbr1);
scanf("%i/n",&nbr2);
resultat = nbr1 / nbr2;
printf("%i/%i=%i\n",nbr1,nbr2,resultat);
}
if (choix==5)
{
printf("ho !tu veux quitter ?\n");
long quitter = 0;
scanf("%i/n",&quitter);
if (quitter=='oui')
{
printf("BY BY BY !a\a\a\\n");
long boucle = 0;
system("PAUSE");
return 0;
}
if (quitter=='non')
{
printf("Good choice ^^");
}
if (choix>=6)
{
printf("ERROR\n");
}
}
Je vous remerci d'avance pour votre reponse,aurevoir et merci.
A voir également:
- Probleme dans le code
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
8 réponses
Re,
encore mieux avec switch
encore mieux avec switch
#include <stdio.h> #include <stdlib.h> int main() { int choix,boucle=1; long nbr1,nbr2; char quitter; while (boucle == 1) { printf("**CALCULATOR**\n\n(effectu une operation sur 2 nombres seulements)\n\n"); printf("===================MENU====================\n\n"); printf("1.Addition\n"); printf("2.Soustraction\n"); printf("3.Multiplication\n"); printf("4.Division\n"); printf("5.Quitter {o - quitter, n - continuer}\n\n"); printf("===================MENU====================\n\n"); printf("Que veux tu ?\n\n"); scanf("%d",&choix); switch(choix) { case 1: printf("ok ! tu as choisi addition !\n"); printf("Entre deux nombres entiers : "); scanf("%ld %ld",&nbr1,&nbr2); printf("%ld+%ld=%ld\n",nbr1,nbr2,nbr1+nbr2); break; case 2: printf("ok ! tu as choisi soustraction !\n"); printf("Entre deux nombres entiers : "); scanf("%ld %ld",&nbr1,&nbr2); printf("%ld-%ld=%ld\n",nbr1,nbr2,nbr1-nbr2); break; case 3: printf("ok ! tu as choisi multiplication !\n"); printf("Entre deux nombres entiers : "); scanf("%ld %ld",&nbr1,&nbr2); printf("%ld*%ld=%ld\n",nbr1,nbr2,nbr1*nbr2); break; case 4: printf("ok ! tu as choisi division !(le 2eme doit etre plus petit que le premier ou egale)\n"); printf("Entre deux nombres entiers : "); scanf("%ld %ld",&nbr1,&nbr2); printf("%ld/%ld=%ld Reste %ld\n",nbr1,nbr2,nbr1/nbr2,nbr1%nbr2); break; case 5: printf("ho !tu veux quitter ?\n"); scanf("%c/n",&quitter); if (quitter=='o') { --boucle; printf("BY BY BY !\a\a\a\n"); system("PAUSE"); break; } if (quitter=='n') printf("Good choice ^^"); break; default: printf("ERROR\n"); break; } } return 0; }lami20j
Premiere chose mais qui n'a rien avoir avec ton erreur je pense :
Sinon, pourrais-tu afficher exactement ce que tu dis le compilateur... car dire qu'il y a des erreurs ca n'avance pas beaucoup ;)
Sinon, est-ce normal de mettre %i dans les scanf pour récupérer un 'long'. Ca serait pas pour récupérer un entier plutot %i ? Dans ce cas, renmplacer tes variables de type 'long' par 'int'.
Sinon, t'étonne pas d'avoir une erreur de division par 0 lors de ta division si tu ne test pas le chiffre du dessous. Prévenir l'utilisateur c'est bien, mais encore faut-il savoir que la première chose qu'il va entre c'est justement une division par 0 pour tester ton programme ;)
Sinon, perso je vois pas à première vue... met les erreurs
a\a\a\\n devient \a\a\a\n
Sinon, pourrais-tu afficher exactement ce que tu dis le compilateur... car dire qu'il y a des erreurs ca n'avance pas beaucoup ;)
Sinon, est-ce normal de mettre %i dans les scanf pour récupérer un 'long'. Ca serait pas pour récupérer un entier plutot %i ? Dans ce cas, renmplacer tes variables de type 'long' par 'int'.
Sinon, t'étonne pas d'avoir une erreur de division par 0 lors de ta division si tu ne test pas le chiffre du dessous. Prévenir l'utilisateur c'est bien, mais encore faut-il savoir que la première chose qu'il va entre c'est justement une division par 0 pour tester ton programme ;)
Sinon, perso je vois pas à première vue... met les erreurs
Voila :
Compiler: Default compiler
Building Makefile: "C:\Documents and Settings\Tanguy sanchez\Bureau\mon projet\calculator\Makefile.win"
Executing make...
make.exe -f "C:\Documents and Settings\Tanguy sanchez\Bureau\mon projet\calculator\Makefile.win" all
gcc.exe -c main.c -o main.o -I"C:/Dev-Cpp/include"
main.c:72:17: warning: multi-character character constant
main.c:79:17: warning: multi-character character constant
main.c: In function `main':
main.c:87: error: syntax error at end of input
make.exe: *** [main.o] Error 1
Execution terminated
Désolé pour la division mais je suis debutant ^_^ enfin bon merci pour avoir repondu.
aurevoir
Compiler: Default compiler
Building Makefile: "C:\Documents and Settings\Tanguy sanchez\Bureau\mon projet\calculator\Makefile.win"
Executing make...
make.exe -f "C:\Documents and Settings\Tanguy sanchez\Bureau\mon projet\calculator\Makefile.win" all
gcc.exe -c main.c -o main.o -I"C:/Dev-Cpp/include"
main.c:72:17: warning: multi-character character constant
main.c:79:17: warning: multi-character character constant
main.c: In function `main':
main.c:87: error: syntax error at end of input
make.exe: *** [main.o] Error 1
Execution terminated
Désolé pour la division mais je suis debutant ^_^ enfin bon merci pour avoir repondu.
aurevoir
en c les variables sont definies en debut de bloc.
tes if ( choix == *) tu peux les remplacer par un switch
if (quitter=='oui') ==> if (quitter=="oui")
pareil pour le non de plus quitter ne doit pas etre defini en tant que long
tes if ( choix == *) tu peux les remplacer par un switch
if (quitter=='oui') ==> if (quitter=="oui")
pareil pour le non de plus quitter ne doit pas etre defini en tant que long
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ligne 72 :
72 C:\Documents and Settings\Tanguy sanchez\Bureau\mon projet\calculator\main.c [Warning] comparison between pointer and integer
ligne 79 :
79 C:\Documents and Settings\Tanguy sanchez\Bureau\mon projet\calculator\main.c [Warning] comparison between pointer and integer
ligne 87 :
87 C:\Documents and Settings\Tanguy sanchez\Bureau\mon projet\calculator\main.c syntax error at end of input
72 C:\Documents and Settings\Tanguy sanchez\Bureau\mon projet\calculator\main.c [Warning] comparison between pointer and integer
ligne 79 :
79 C:\Documents and Settings\Tanguy sanchez\Bureau\mon projet\calculator\main.c [Warning] comparison between pointer and integer
ligne 87 :
87 C:\Documents and Settings\Tanguy sanchez\Bureau\mon projet\calculator\main.c syntax error at end of input
dsl de ne repondre que maintenant,j'ai eu des probleme internet.
ligne 72 : if (quitter=="oui")
ligne 79 : if (quitter=="non")
ligne 87 : }
ligne 72 : if (quitter=="oui")
ligne 79 : if (quitter=="non")
ligne 87 : }
Salut,
il faut plutôt utiliser la fonction strcmp
Je vois auss que tu déclare tes variables long en revance pour le format tu utilise %i
J'ai modifié et rangé un peu ton code:
Par exemple je vois que tu déclares plusieurs fois des variables avec le même nom
long nbr1 = 0;
long nbr2 = 0;
J'ai ajouter aussi le Reste du la division entre 2 entiers.
Il avait aussi une accolade manquante dans ton code.
La variable resultat n'est pas necessaire donc je l'ai enlevée :-))
il faut plutôt utiliser la fonction strcmp
if((strcmp(quitter,"oui"))==0)
Je vois auss que tu déclare tes variables long en revance pour le format tu utilise %i
J'ai modifié et rangé un peu ton code:
Par exemple je vois que tu déclares plusieurs fois des variables avec le même nom
long nbr1 = 0;
long nbr2 = 0;
J'ai ajouter aussi le Reste du la division entre 2 entiers.
Il avait aussi une accolade manquante dans ton code.
if (choix==5) { printf("ho !tu veux quitter ?\n"); long quitter = 0; scanf("%i/n",&quitter); <-------------------------ici avant if(quitter=='oui') if (quitter=='oui') { printf("BY BY BY !a\a\a\\n"); long boucle = 0; system("PAUSE"); return 0; } if (quitter=='non') { printf("Good choice ^^"); } <-------------------------------------ou ici pour fermer le 1er if
La variable resultat n'est pas necessaire donc je l'ai enlevée :-))
#include <stdio.h> #include <stdlib.h> int main() { int choix,boucle=1; long nbr1,nbr2; char quitter; while (boucle == 1) { printf("**CALCULATOR**\n\n(effectu une operation sur 2 nombres seulements)\n\n"); printf("===================MENU====================\n\n"); printf("1.Addition\n"); printf("2.Soustraction\n"); printf("3.Multiplication\n"); printf("4.Division\n"); printf("5.Quitter {o - quitter, n - continuer}\n\n"); printf("===================MENU====================\n\n"); printf("Que veux tu ?\n\n"); scanf("%d",&choix); if (choix==1) { printf("ok ! tu as choisi addition !\n"); printf("Entre deux nombres entiers : "); scanf("%ld %ld",&nbr1,&nbr2); printf("%ld+%ld=%ld\n",nbr1,nbr2,nbr1+nbr2); } if (choix==2) { printf("ok ! tu as choisi soustraction !\n"); printf("Entre deux nombres entiers : "); scanf("%ld %ld",&nbr1,&nbr2); printf("%ld-%ld=%ld\n",nbr1,nbr2,nbr1-nbr2); } if (choix==3) { printf("ok ! tu as choisi multiplication !\n"); printf("Entre deux nombres entiers : "); scanf("%ld %ld",&nbr1,&nbr2); printf("%ld*%ld=%ld\n",nbr1,nbr2,nbr1*nbr2); } if (choix==4) { printf("ok ! tu as choisi division !(le 2eme doit etre plus petit que le premier ou egale)\n"); printf("Entre deux nombres entiers : "); scanf("%ld %ld",&nbr1,&nbr2); printf("%ld/%ld=%ld Reste %ld\n",nbr1,nbr2,nbr1/nbr2,nbr1%nbr2); } if (choix==5) { printf("ho !tu veux quitter ?\n"); scanf("%c/n",&quitter); if (quitter=='o') { --boucle; printf("BY BY BY !\a\a\a\n"); system("PAUSE"); } if (quitter=='n') printf("Good choice ^^"); } if (choix>=6) printf("ERROR\n"); } return 0; }lami20j