Demande correction code en C (très simple) [Fermé]

Signaler
Messages postés
196
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
13 février 2017
-
Messages postés
196
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
13 février 2017
-
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 !")

}






8 réponses

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 675
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 80099 internautes nous ont dit merci ce mois-ci

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 468
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); 


Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 468
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.
Messages postés
459
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
30 novembre 2011
77
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
Messages postés
196
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
13 février 2017
21
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 468
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.
Messages postés
196
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
13 février 2017
21
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
Messages postés
459
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
30 novembre 2011
77
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..
Messages postés
196
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
13 février 2017
21
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 :) !