Erreur C

Résolu/Fermé
bastien352 Messages postés 868 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 29 février 2012 - 30 nov. 2009 à 20:31
bastien352 Messages postés 868 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 29 février 2012 - 4 déc. 2009 à 22:40
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 868 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 29 février 2012 68
30 nov. 2009 à 20:37
Up
0
.:Goox:. Messages postés 2816 Date d'inscription lundi 22 mai 2006 Statut Contributeur Dernière intervention 7 janvier 2017 2 216
30 nov. 2009 à 20:40
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 868 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 29 février 2012 68
30 nov. 2009 à 20:43
salut ,

j'ai toujours erreurs ici

switch (choixMode)
 }
{

    case 1:




c'est bizarre :S

MERCI de ton aide
0
.:Goox:. Messages postés 2816 Date d'inscription lundi 22 mai 2006 Statut Contributeur Dernière intervention 7 janvier 2017 2 216
30 nov. 2009 à 20:54
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 868 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 29 février 2012 68
30 nov. 2009 à 20:57
désormais sa beug une ligne en dessous :S

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

case 1:
0
.:Goox:. Messages postés 2816 Date d'inscription lundi 22 mai 2006 Statut Contributeur Dernière intervention 7 janvier 2017 2 216
1 déc. 2009 à 18:24
Ah, mais le logiciel que tu utilise pour compiler, il te met bien une erreur?
0
lucieb31 Messages postés 345 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 28 juillet 2012 62
1 déc. 2009 à 18:40
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 868 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 29 février 2012 68
1 déc. 2009 à 21:38
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 déc. 2009 à 21:45
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 868 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 29 février 2012 68
1 déc. 2009 à 21:47
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 déc. 2009 à 21:50
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 868 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 29 février 2012 68
1 déc. 2009 à 21:54
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 déc. 2009 à 22:00
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 868 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 29 février 2012 68
1 déc. 2009 à 22:02
quelle est la différence ?


merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 déc. 2009 à 22:10
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 868 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 29 février 2012 68
4 déc. 2009 à 22:40
Merci cela marche !!! merci bcp !!
0