Demande correction code en C (très simple)

Fermé
thuthur76 Messages postés 196 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 26 juillet 2013 - Modifié par thuthur76 le 5/09/2011 à 19:35
thuthur76 Messages postés 196 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 26 juillet 2013 - 9 sept. 2011 à 18:28
Bonjour, je suis un très récent débutant en C et j'ai créer ce bout de code, seulement il ne marche pas :p ! Le but est de faire une p'tit calculatrice, là je propose l'addition, la soustraction et la multiplication seulement je n'ai inséré que les deux premiers car j'ai déjà rencontré une erreur --' ! (faite pas attention au "else", je l'ai mis dans le cas ou le programme ne comprendrais pas pourquoi il y a un if et un else if sans else (ce qui n'a rien changer --')

Voici mon morceau de code --' Pour ce qui est des accolade etc... je n'ai rien compris, je sais pas quand je dois les mettres, donc je demande un peu d'aider et d'explication svp :'( !

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

int main()

{
int addition = 0;
int nombre1 = 0;
int nombre2 = 0;
int soustraction = 0;
int multiplication = 0;
int calculs = 0;
printf("Bonjour, je vais vous présenter ma première calculatrice programmée en C x), oui ça pue, nan je n'en n'ai pas honte >.< !\n Pour commencer vous allez choisir le type d'opération à faire (choisir 1. / 2. / 3. selon votre choix):");
printf("\n1. Addition\n");
printf("2. Soustraction\n");
printf("3. Multiplicatio\n");
scanf("%d", &calculs);
if (calculs = 1);
printf("Vous avez choisis l'addition, quel est le premier chiffre/nombre à additioner ?");
scanf("%d", &nombre1);
printf("Choissez désormais le second chiffre à additionner avec %d.", &nombre1);
scanf("%d", &nombre2);
addition = nombre1 + nombre2;
printf("Voici le résultat de votre calcul :) ! (trop cool ma calculette pas vrai x) ) :\n %d + %d = %d", &nombre1, &nombre2, &addition);

else if (calculs = 2);
printf("Vous avez choisis la soustraction, quel est le chiffre/nombre auquel vous voulez soustraire le second nombre (qu'on définira après) ?");
scanf("%d", &nombre1);
printf("Choissez désormais le chiffre/nombre qui sera soustrait à %d.", &nombre1);
scanf("%d", &nombre2);
soustraction = nombre1 - nombre2;
printf("Voici le résultat de votre calcul :) ! (trop cool ma calculette pas vrai x) ) :\n %d - %d = %d", &nombre1, &nombre2, &soustraction);


else (calculs != 1 && != 2 && != 3)
printf("\nBiiip de codage de biiiip qui marche pas !!!!...\n \n BIIIIIIIIIP !")

}






A voir également:

8 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
5 sept. 2011 à 20:00
Bonjour,

Voici une correction, j'ai graissé les endroits où j'ai mis des modifications.
Pour info, la prochaine fois que vous postez un code, utilisez la balise "code" (à droite du bouton souligné". Cela permettra de garder l'indentation.

Au niveau des erreurs importantes, dans le printf, il ne faut pas mettre l'adresse de la variable (&nombre1), mais bien la valeur (nombre1).
Dans les if, c'est un double égal qu'il faut mettre pour comparer : if (calculs==1).
Pas de point virgule après un if, sinon ça sert à rien. Retenez qu'après un if si on ne met pas d'accolades, seule la première instruction suivante sera prise en compte dans le if. Pour que toutes les instructions suivantes soient conditionnées, il faut les encadrer par des accolades.

Prochaine étape pour vous : les fonctions. Cela facilite la lecture et le débogage ;-))).

Vous avez le siteduzero qui propose des tuto pour le C.

Bon apprentissage :
#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
   int addition = 0; 
   int nombre1 = 0; 
   int nombre2 = 0; 
   int soustraction = 0; 
   int multiplication = 0; 
   int calculs = 0; 

   printf("Bonjour, je vais vous présenter ma première calculatrice programmée en C x), oui ça pue, nan je n'en n'ai pas honte >.< !\n Pour commencer vous allez choisir le type d'opération à faire (choisir 1. / 2. / 3. selon votre choix):"); 
   printf("\n1. Addition\n"); 
   printf("2. Soustraction\n"); 
   printf("3. Multiplicatio\n"); 
   scanf("%d", &calculs); 
   
   if (calculs == 1) { 
      printf("Vous avez choisis l'addition, quel est le premier chiffre/nombre à additioner ?"); 
      scanf("%d", &nombre1); 
      printf("Choissez désormais le second chiffre à additionner avec %d.",nombre1);
      scanf("%d", &nombre2); 
      addition = nombre1 + nombre2; 
      printf("Voici le résultat de votre calcul :) ! (trop cool ma calculette pas vrai x) ) :\n %d + %d = %d", nombre1, nombre2, addition); 
   }
   else if (calculs == 2) { 
      printf("Vous avez choisis la soustraction, quel est le chiffre/nombre auquel vous voulez soustraire le second nombre (qu'on définira après) ?"); 
scanf("%d", &nombre1); 
      printf("Choissez désormais le chiffre/nombre qui sera soustrait à %d.", &nombre1); 
      scanf("%d", &nombre2); 
      soustraction = nombre1 - nombre2; 
      printf("Voici le résultat de votre calcul :) ! (trop cool ma calculette pas vrai x) ) :\n %d - %d = %d", &nombre1, &nombre2, &soustraction); 
   }

else {
      printf("\nBiiip de codage de biiiip qui marche pas !!!!...\n \n BIIIIIIIIIP !") 
</gras>}</gras>

   return 0;
} 
4
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 sept. 2011 à 20:03
Salut,

printf("Choissez désormais le second chiffre à additionner avec %d.", &nombre1);
Commence par corriger la variable dans printf.
%d demande un int et tu as mis un int*

Ce qui donne
printf("Choissez désormais le second chiffre à additionner avec %d.", nombre1); 


2
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 sept. 2011 à 20:05
Re,

if (calculs = 1);
Le signe = c'est l'opérateur d'affectation, pour tester l'égalité il faut utiliser ==
Ensuite si tu mets ; alors c'est la fin d'instruction, if ne traite rien en fait.

Dans le contexte que tu as écris ça sera toujours vrai puisque l'opération d'affectation réussi sans problème.
2
1fort-matique Messages postés 454 Date d'inscription jeudi 9 juin 2011 Statut Membre Dernière intervention 30 novembre 2011 96
5 sept. 2011 à 20:09
Salut voila un code que j'ai fais avec un pote , ton code contient pas mal d'erreur mais c'est le début ;)

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

int main()
{
int nombre = 0, rejouer = 0;
double resultat = 0;
double resultat1 = 0, resultat2 = 0; double resultat5 = 0;
do
{
printf("\nCalcul actrice ;)\n");
printf("\nVeuillez choisir l'operations que vous souhaitez utiliser\n");
printf("\n + - / * \n");
printf("|----------|\n"),
printf("\n1.Addition (+)\n");
printf("\n2.Soustraction (-)\n");
printf("\n3.Divison (/)\n");
printf("\n4.Multiplication (*)\n\n");
printf("En attente de la reponse...\n\n");
printf("Entrez le chiffre correspondant a votre choix\n\n");
scanf("%d", &nombre);



switch (nombre)
{
case 1:
printf("\n1.Vous avez choisis l'addition (+)\n");
printf("\nVeuillez entrer le premier chiffre a calculer\n\n");
scanf("%lf" ,&resultat1);
printf("\nVeuillez entrer le deuxieme chiffre a calculer\n\n");
scanf("%lf", &resultat2);
resultat = resultat1 + resultat2;
printf ("\n%f + %f = %f\n", resultat1, resultat2, resultat);
break;
case 2:
printf("\n2.Vous avez choisis la soustraction (-)\n");
printf("\nVeuillez entrer le premier chiffre a calculer\n\n");
scanf("%lf" ,&resultat1);
printf("\nVeuillez entrer le deuxieme chiffre a calculer\n\n");
scanf("%lf", &resultat2);
resultat = resultat1 - resultat2;
printf ("\n%f - %f = %f\n", resultat1, resultat2, resultat);
break;
case 3:
printf("\n3.Vous avez choisis la division (/)\n");
printf("\nVeuillez entrer le premier chiffre a calculer\n\n");
scanf("%lf" ,&resultat1);
printf("\nVeuillez entrer le deuxieme chiffre a calculer\n\n");
scanf("%lf", &resultat2);
resultat = resultat1 / resultat2;
printf ("\n%f / %f = %f\n", resultat1, resultat2, resultat);
break;
case 4:
printf("\n4.Vous avez choisis la multiplication (*)\n");
printf("\nVeuillez entrer le premier chiffre a calculer\n\n");
scanf("%lf" ,&resultat1);
printf("\nVeuillez entrer le deuxieme chiffre a calculer\n\n");
scanf("%lf", &resultat2);
resultat = resultat1 * resultat2;
printf ("\n%f * %f = %f\n", resultat1, resultat2, resultat);
break;
default:
printf("\nErreur veuillez reformuler une solution correcte");
scanf("%lf" ,&resultat5);
break;

}
printf("\n\nVoulez vous recommencer une operations ?\n\n");
printf(" \n\n0 : non \n\n");
printf(" \n\n1 : oui \n\n");
scanf("%d" , &rejouer);
}while (rejouer == 1);
return 0;
}
//mettez un commentaire
0

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

Posez votre question
thuthur76 Messages postés 196 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 26 juillet 2013 22
5 sept. 2011 à 21:25
Merci à tous pour vos réponses :) ! J'ai compris pas mal de chose au niveau du C :) ! Sincèrement c'est très sympa de votre part et je vous en remercie ;) ! Je vais corriger tout ça manuellement pour bien retenir mes erreurs ! C'est peut-être beaucoup demander, mais quelqu'un ici aurait skype ou un logiciel de messagerie instantanée ? Juste dans le cas ou j'aurai besoin d'un peu d'aide (je ne vais pas vous harceler :p ) !

Merci d'avance ;) !




Bye
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
Modifié par lami20j le 5/09/2011 à 21:36
Re,

mais quelqu'un ici aurait skype ou un logiciel de messagerie instantanée ? Juste dans le cas ou j'aurai besoin d'un peu d'aide (je ne vais pas vous harceler :p ) !


Le but de forum c'est justement la possibilité de partager les questions/réponses/solutions.
Si tu as besoin d'aide il suffit de montrer ce que tu fais et demander de l'aide.
Tu as plus de chance d'avoir des réponses que si tu le faisait sur skype ou une autre MI.
La preuve sont les réponses que tu as reçu ici assez rapidement ;-)

Merci et bonne continuation.
0
thuthur76 Messages postés 196 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 26 juillet 2013 22
5 sept. 2011 à 21:35
Merci pour ton code, mais tu sais, j'ai déjà une jolie calculatrice intégrée à windows :p ! Moi c'était vraiment le fait de trouver mes fautes, pour ne pas les répétés par la suite dans un autre programme :s ! Donc un autre programme tout fait m'aide à moitié ^^ Mais je l'ai quand même regarder pour voir comment tu le construit :) !

Merci
0
1fort-matique Messages postés 454 Date d'inscription jeudi 9 juin 2011 Statut Membre Dernière intervention 30 novembre 2011 96
6 sept. 2011 à 18:52
Oui ^^ mais j'avais pas d'idée de programme , en faite moi j'aurais vu ce code j'aurai comparer au miens et j'aurai regarder sur le site du zéro ce que je ne connaissais pas ( do while = boucle ) switch pour remplacer le if else etc..
0
thuthur76 Messages postés 196 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 26 juillet 2013 22
Modifié par thuthur76 le 9/09/2011 à 18:43
Salut à tous :) !
Je viens de me remettre un peu au cour (switch) et voici ce que j'ai fait en une p'tite heure (dont 30minutes pour m'apercevoir que j'avais oublié un T à resultat !!!!).

J'avance pas des masses, mais je m'aperçois que je fais toujours pas mal de fautes très... basique >.< (il est juste horrible le point virgule --') Et que je pense mieux de faire des exercices de gros débutant, pour me familiarisé un peu plus avec le code :) !

J'aimerai savoir si je peux faire plus simple, et si possible ne pas me dévoilé le tout maintenant, juste me donner deux-trois astuces pour que je découvre par moi même ;) !

Merci d'avance, voici le code :

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

int main()
{
int forwhile = 0;

while (forwhile==0)
{
int nombre1 = 0;
int nombre2 = 0;
int resultat = 0;
int type_op = 0;


printf("\n- Choisissez le type d'operation que vous souhaitez executer: -\n\n"); //On demande le type de l'opération (1=addition 2= soustraction etc...).
printf("1.  -Addition-");
printf("\n2.  -Soustraction-\n");
printf("3.  -Multiplication-\n");
printf("4.  -Division-\n\n");
scanf("%d", &type_op);                                                            //On enregistre dans la variable 'type_op' ce que la personne va écrire.
printf("\n\nChoisissez le premier chiffre/nombre de l'operation.\n\n");                  //On demande le premier chiffre ou nombre de l'opération.
scanf("%d", &nombre1);                                                            //On enregistre dans la variable 'nombre1' ce que la personne va écrire.
printf("\n\nChoisissez le second chiffre/nombre de l'operation.\n\n");                   //On demande le second chiffre ou nombre de l'opération.
scanf("%d", &nombre2);                                                            //On enregistre dans la variable 'nombre2' ce que la personne va écrire.
printf("\n\n");

switch (type_op)
{
    case 1:
    resultat = nombre1 + nombre2;
    printf("Voici le resultat de votre operation:\n%d+%d=%d\n\n\n\n\n\n\n\n\n", nombre1, nombre2, resultat);
    break;

    case 2:
    resultat = nombre1 - nombre2;
    printf("Voici le resultat de votre operation:\n%d-%d=%d\n\n\n\n\n\n\n\n\n", nombre1, nombre2, resultat);
    break;

    case 3:
    resultat = nombre1 * nombre2;
    printf("Voici le resultat de votre operation:\n%dx%d=%d\n\n\n\n\n\n\n\n\n", nombre1, nombre2, resultat);
    break;

    case 4:
    resultat = nombre1 / nombre2;
    printf("Voici le resultat de votre operation:\n%d:%d=%d\n\n\n\n\n\n\n\n\n", nombre1, nombre2, resultat);
    break;

    default:
    printf("Et bah tu vois, j'ai meme prevu un message pour les p'tit rigolos dans ton genre ;) !");
    break;
}
}
return 0;
}


Bye :) !
0