Erreur C

Résolu
bastien352 Messages postés 1141 Statut Membre -  
bastien352 Messages postés 1141 Statut Membre -
Bonjour,
je commence a apprendre le langague informatique C !!
Mais je bloque sur une ligne ?!

je vous mets le code source ( ps : c'est une calculette )

__________________________________________________________________________________________
<code>
#include <stdio.h>
#include <stdlib.h>

int main()
{                                  // il y a une erreur ici il me met un rond rouge !!

int choixMode;

printf(" **Mode** \n\n\n\n") ;

printf("1. Addition \n") ;
printf("2. Multiplication \n\n") ;
printf("Tape le numero de l'option chosit \n");
scanf("d%", &choixMode ) ;

 switch (choixMode)
{

    case 1:
printf("****Mode Addition**** \n\n");
int resultat = 0, nombre1 = 0, nombre2 = 0 ;
printf(" Entre le nombre1 : \n");
scanf("%d", &nombre1);
printf(" Entre le nombre2 : \n");
scanf("%d", &nombre2);
resultat =  nombre1 + nombre2;
printf("%d + %d = %d \n",nombre1 , nombre2 , resultat);
       break;


    case 2:
printf ("****Mode Multiplication**** \n\n");
int resultat = 0, nombre1 = 0, nombre2 = 0 ;   // il y a une autre erreur ici ?! un carré rouge !! 
printf(" Entre le nombre1 : \n");
scanf("%d", &nombre1);
printf(" Entre le nombre2 : \n");
scanf("%d", &nombre2);
resultat =  nombre1 * nombre2;
printf("%d * %d = %d \n",nombre1 , nombre2 , resultat);
       break;


    return 0;
while(!kbhit());
__________________________________________________________________________________________
</code>

il y a deux erreur !!


Merci de votre aide !

16 réponses

bastien352 Messages postés 1141 Statut Membre 68
 
Up
0
.:Goox:. Messages postés 3424 Statut Contributeur 2 216
 
Salut,
Apparemment, il te manque des "}"
essaie avec ceci:


#include <stdio.h>
#include <stdlib.h>

int main()
{                                  

int choixMode;

printf(" **Mode** \n\n\n\n") ;

printf("1. Addition \n") ;
printf("2. Multiplication \n\n") ;
printf("Tape le numero de l'option chosit \n");
scanf("d%", &choixMode ) ;

 switch (choixMode)
 }
{

    case 1:
printf("****Mode Addition**** \n\n");
int resultat = 0, nombre1 = 0, nombre2 = 0 ;
printf(" Entre le nombre1 : \n");
scanf("%d", &nombre1);
printf(" Entre le nombre2 : \n");
scanf("%d", &nombre2);
resultat =  nombre1 + nombre2;
printf("%d + %d = %d \n",nombre1 , nombre2 , resultat);
       break;


    case 2:
printf ("****Mode Multiplication**** \n\n");
int resultat = 0, nombre1 = 0, nombre2 = 0 ;   
printf(" Entre le nombre1 : \n");
scanf("%d", &nombre1);
printf(" Entre le nombre2 : \n");
scanf("%d", &nombre2);
resultat =  nombre1 * nombre2;
printf("%d * %d = %d \n",nombre1 , nombre2 , resultat);
       break;


    return 0;
while(!kbhit());
}
0
bastien352 Messages postés 1141 Statut Membre 68
 
salut ,

j'ai toujours erreurs ici

switch (choixMode)
 }
{

    case 1:




c'est bizarre :S

MERCI de ton aide
0
.:Goox:. Messages postés 3424 Statut Contributeur 2 216
 
Ok, et avec le ";" qui va bien:

switch (choixMode);
}
{

case 1:
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bastien352 Messages postés 1141 Statut Membre 68
 
désormais sa beug une ligne en dessous :S

switch (choixMode);
}
{ ------------------------> ICI

case 1:
0
.:Goox:. Messages postés 3424 Statut Contributeur 2 216
 
Ah, mais le logiciel que tu utilise pour compiler, il te met bien une erreur?
0
lucieb31 Messages postés 363 Statut Membre 62
 
il manque une } mais a la fin,
essaie avec ça :
#include <stdio.h>
#include <stdlib.h>

int main()
{

int choixMode;

printf(" **Mode** \n\n\n\n") ;

printf("1. Addition \n") ;
printf("2. Multiplication \n\n") ;
printf("Tape le numero de l'option chosit \n");
scanf("d%", &choixMode ) ;

switch (choixMode)

{

case 1:
printf("****Mode Addition**** \n\n");
int resultat = 0, nombre1 = 0, nombre2 = 0 ;
printf(" Entre le nombre1 : \n");
scanf("%d", &nombre1);
printf(" Entre le nombre2 : \n");
scanf("%d", &nombre2);
resultat = nombre1 + nombre2;
printf("%d + %d = %d \n",nombre1 , nombre2 , resultat);
break;


case 2:
printf ("****Mode Multiplication**** \n\n");
int resultat = 0, nombre1 = 0, nombre2 = 0 ;
printf(" Entre le nombre1 : \n");
scanf("%d", &nombre1);
printf(" Entre le nombre2 : \n");
scanf("%d", &nombre2);
resultat = nombre1 * nombre2;
printf("%d * %d = %d \n",nombre1 , nombre2 , resultat);
break;
}

return 0;
while(!kbhit());
}

on ne met javais d'accolade fermante aprés le switch.
0
bastien352 Messages postés 1141 Statut Membre 68
 
merci de votre aide !
mais maintenant l'erreur est plus bas :S
#include <stdio.h>
#include <stdlib.h>

int main()
{

int choixMode;

printf(" **Mode** \n\n\n\n") ;

printf("1. Addition \n") ;
printf("2. Multiplication \n\n") ;
printf("Tape le numero de l'option chosit \n");
scanf("d%", &choixMode ) ;

switch (choixMode)

{

case 1:
printf("****Mode Addition**** \n\n");
int resultat = 0, nombre1 = 0, nombre2 = 0 ;
printf(" Entre le nombre1 : \n");
scanf("%d", &nombre1);
printf(" Entre le nombre2 : \n");
scanf("%d", &nombre2);
resultat = nombre1 + nombre2;
printf("%d + %d = %d \n",nombre1 , nombre2 , resultat);
break;


case 2:
printf ("****Mode Multiplication**** \n\n");
int resultat = 0, nombre1 = 0, nombre2 = 0 ;                // ici il ya y un rectangle ronge !!!!!!!!!
printf(" Entre le nombre1 : \n");
scanf("%d", &nombre1);
printf(" Entre le nombre2 : \n");
scanf("%d", &nombre2);
resultat = nombre1 * nombre2;
printf("%d * %d = %d \n",nombre1 , nombre2 , resultat);
break;
}

return 0;
while(!kbhit());
}
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Salut,
Plusieurs erreurs.
int resultat = 0, nombre1 = 0, nombre2 = 0 ;
Tu les redéfinis au sein même du main. Donc conflits. Si tu veux faire ça, il te faut utiliser des scopes supplémentaires, ou tout simplement tu définis ces variables en haut du main.
Les instructions après un return sont inutiles.
Tu as mis d% au lieu de %d dans un scanf.

Cdlt,
0
bastien352 Messages postés 1141 Statut Membre 68
 
Slt ,

peut tu me dire ce qu'il faut que je rajoute car je debute et j'ai pas tout compris dsl
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Tu supprimes les lignes int resultat = 0, nombre1 = 0, nombre2 = 0 ; de tes cases dans le switch. Tu rajoutes cette ligne là après avant int choixMode;
Ensuite ton premier scanf("d%",...) est erroné, il faut mettre : scanf("%d",...);
Et tu enlèves ta ligne while(!kbhit());
0
bastien352 Messages postés 1141 Statut Membre 68
 
Merci enlever la ligne a marcher mais je ne comprend pas pk il faut pas la mettre ?

et la ligne while(!kbhit()); me permet de garder le resultat a l'ecran car autrement ma fenetre dos s'en va des que je tape les deux chiffres et pas le temps de voire le resultat !!!

merci encore
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Tu ne vois pas pourquoi ?
Dans le premier case 1: tu définis : int resultat; et dans le deuxième case, tu remets int resultat.
Le compilateur ne sait pas quoi faire car tu définis une variable deux fois. Il faut juste la définir une et une seule fois.

Pour le while(!kbhit()); je te conseille dans ce cas de l'enlever et de mettre avant : getchar(); getchar(); avant le return;
Le premier getchar() enlèvera le '\n' stocké dans le buffer clavier lors des scanf. Le deuxième attendra que tu appuies sur une touche suivi de entrée pour continuer.

Cdlt
0
bastien352 Messages postés 1141 Statut Membre 68
 
quelle est la différence ?


merci
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
kbhit() n'est pas portable contrairement à getchar();
Ce qui veut dire qu'avec la version kbhit ton programme ne tournera que sur Windows qu'alors avec getchar(), il fonctionnera sur tous les systèmes d'exploitation (Windows, Gnu/Linux, Mac OS X, ...).

Autant prendre les bonnes habitudes dès le début ;-))).
0
bastien352 Messages postés 1141 Statut Membre 68
 
Merci cela marche !!! merci bcp !!
0