Probleme dans le code

Résolu
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.

8 réponses

  1. Modérateur
    Re,

    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
    1
    1. Contributeur
      Premiere chose mais qui n'a rien avoir avec ton erreur je pense :
      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
      0
      1. 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
        0
        1. Contributeur
          Pourrait tu donner à quellles lignes correspondent les numéros de ligne suivants : 72, 79, 87
          0
      2. 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
        0
        1. 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
          0
          1. Contributeur
            C'est pas ca que je voulais, je veux savoir a quelle ligne de ton code correspondent les numéros de ligne des erreurs affichées par ton compilateur

            Bon, sinon, tu n'aurais pas oublier une paranethese fermante à la fin des fois ?
            0
        2. dsl de ne repondre que maintenant,j'ai eu des probleme internet.
          ligne 72 : if (quitter=="oui")
          ligne 79 : if (quitter=="non")
          ligne 87 : }
          0
          1. Modérateur
            Salut,

            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
            0
            1. ca marche maintant.
              merci de votre aide,je clos la discussion en ce dernier message.
              @+
              0