Resultat nul pour tout calcul en C, pourquoi?
Résolu
Fullren
-
nemeditpasmerci -
nemeditpasmerci -
Bonjour,
J'essaie de programmer une calculatrice très très basique pour m'entraîner a la programmation en C , seulement j'ai un gros problème : tout se déroule parfaitement jusqu'au resultat : le resultat de chaque calcul est de 0.0000 ... peu importe quel nombre je prends
j'ai essayé en modifiant le type des variables des resultats, en les initialisant a 0 ou en ne le faisant pas, en choisissant des nombres de la forme "3" et de la forme "3.0" ... rien n'y fait !
Voila mon code source :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
long choixCalcul = 0;
double nombre1 = 0;
double nombre2 = 0;
double resultatAdd = 0;
double resultatSous = 0;
double resultatMult = 0;
double resultatDiv = 0;
double resultatRac = 0;
printf("Bienvenue sur la super calculatrice.\n\n");
printf("Choisissez maintenant le type de calcul que vous souhaitez faire:\n");
printf("1: Addition\n");
printf("2: Soustraction\n");
printf("3: Multiplication\n");
printf("4: Division\n");
printf("5: Racine carree\n");
scanf("%d", &choixCalcul);
switch (choixCalcul)
{
case 1:
printf("Choisissez le premier nombre a additionner.\n");
scanf("%lf", &nombre1);
printf("Choisissez maintenant le deuxieme nombre a additionner.\n");
scanf("%lf", &nombre2);
resultatAdd = nombre1 + nombre2;
printf("Le resultat de votre addition est : %f.\n", resultatAdd);
break;
case 2:
printf("Choisissez le premier nombre auquel un deuxieme sera soustrait.\n");
scanf("%lf", &nombre1);
printf("Choisissez maintenant ce deuxieme nombre.\n");
scanf("%lf", &nombre2);
resultatSous = nombre1 - nombre2;
printf("Le resultat de votre soustraction est : %f.\n", resultatSous);
break;
case 3:
printf("Choisissez le premier nombre a multiplier.\n");
scanf("%lf", &nombre1);
printf("Choisissez le deuxieme nombre a multiplier.\n");
scanf("%lf", &nombre2);
resultatMult = nombre1 * nombre2;
printf("Le resultat de votre multiplication est : %f.\n", resultatMult);
break;
case 4:
printf("Choisissez le numerateur.\n");
scanf("%lf", &nombre1);
printf("Choisissez le denominateur.\n");
scanf("%lf", &nombre2);
resultatDiv = nombre1 / nombre2;
printf("Le resultat de votre division est : %f.\n", resultatDiv);
break;
case 5:
printf("Choisissez le nombre dont vous desirez la racine carree.\n");
scanf("%lf", &nombre1);
resultatRac = sqrt(nombre1);
printf("La racine carree de ce nombre est : %f.\n", resultatRac);
default:
printf("Ca vous amuse? Je vous rapelle qu'il n'y a que 5 choix.\n");
break;
}
system("PAUSE");
return 0;
}
Besoin d'aide :(
J'essaie de programmer une calculatrice très très basique pour m'entraîner a la programmation en C , seulement j'ai un gros problème : tout se déroule parfaitement jusqu'au resultat : le resultat de chaque calcul est de 0.0000 ... peu importe quel nombre je prends
j'ai essayé en modifiant le type des variables des resultats, en les initialisant a 0 ou en ne le faisant pas, en choisissant des nombres de la forme "3" et de la forme "3.0" ... rien n'y fait !
Voila mon code source :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
long choixCalcul = 0;
double nombre1 = 0;
double nombre2 = 0;
double resultatAdd = 0;
double resultatSous = 0;
double resultatMult = 0;
double resultatDiv = 0;
double resultatRac = 0;
printf("Bienvenue sur la super calculatrice.\n\n");
printf("Choisissez maintenant le type de calcul que vous souhaitez faire:\n");
printf("1: Addition\n");
printf("2: Soustraction\n");
printf("3: Multiplication\n");
printf("4: Division\n");
printf("5: Racine carree\n");
scanf("%d", &choixCalcul);
switch (choixCalcul)
{
case 1:
printf("Choisissez le premier nombre a additionner.\n");
scanf("%lf", &nombre1);
printf("Choisissez maintenant le deuxieme nombre a additionner.\n");
scanf("%lf", &nombre2);
resultatAdd = nombre1 + nombre2;
printf("Le resultat de votre addition est : %f.\n", resultatAdd);
break;
case 2:
printf("Choisissez le premier nombre auquel un deuxieme sera soustrait.\n");
scanf("%lf", &nombre1);
printf("Choisissez maintenant ce deuxieme nombre.\n");
scanf("%lf", &nombre2);
resultatSous = nombre1 - nombre2;
printf("Le resultat de votre soustraction est : %f.\n", resultatSous);
break;
case 3:
printf("Choisissez le premier nombre a multiplier.\n");
scanf("%lf", &nombre1);
printf("Choisissez le deuxieme nombre a multiplier.\n");
scanf("%lf", &nombre2);
resultatMult = nombre1 * nombre2;
printf("Le resultat de votre multiplication est : %f.\n", resultatMult);
break;
case 4:
printf("Choisissez le numerateur.\n");
scanf("%lf", &nombre1);
printf("Choisissez le denominateur.\n");
scanf("%lf", &nombre2);
resultatDiv = nombre1 / nombre2;
printf("Le resultat de votre division est : %f.\n", resultatDiv);
break;
case 5:
printf("Choisissez le nombre dont vous desirez la racine carree.\n");
scanf("%lf", &nombre1);
resultatRac = sqrt(nombre1);
printf("La racine carree de ce nombre est : %f.\n", resultatRac);
default:
printf("Ca vous amuse? Je vous rapelle qu'il n'y a que 5 choix.\n");
break;
}
system("PAUSE");
return 0;
}
Besoin d'aide :(
A voir également:
- Resultat nul pour tout calcul en C, pourquoi?
- Resultat foot - Télécharger - Vie quotidienne
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Lexer resultat - Télécharger - Sport
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
18 réponses
si tu mets un int main()
faut faire return 0;
sinon, si tu fais void main(), faut rien faire... même si par défaut il le fait! question de principe!
pour ton code, ce qui me plait pas c'est les variables que tu utilises... ou comment tu t'en sers....
par exemple tu utilise un long pour le choix... alors qu'un short est largement suffisant....
mais c'est du chipotage!! mois ce que je veux savoir... c'est que tu déclare des double, et tu t'en sers en tant que lon float.... normalement c'est pas pareil! %d pour un double!
sinon mon code marche chez moi aussii :)
essaie un autre compilateur... genre code::bock
faut faire return 0;
sinon, si tu fais void main(), faut rien faire... même si par défaut il le fait! question de principe!
pour ton code, ce qui me plait pas c'est les variables que tu utilises... ou comment tu t'en sers....
par exemple tu utilise un long pour le choix... alors qu'un short est largement suffisant....
mais c'est du chipotage!! mois ce que je veux savoir... c'est que tu déclare des double, et tu t'en sers en tant que lon float.... normalement c'est pas pareil! %d pour un double!
sinon mon code marche chez moi aussii :)
essaie un autre compilateur... genre code::bock
c'est bizarre... t'as essayer d'utiliser les variables correctement?
genre pour un int
faire %i
pour un float, un %f
etc....
genre pour un int
faire %i
pour un float, un %f
etc....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si j'ai bien compris, renvoyer "0" sert à "expliquer" a l'ordinateur que la fonction s'est déroulée sans erreur, pour qu'il puisse fermer le programme .
ps : c'est un programme sur console, si jamais ca change quelquechose
ps2 : Je suis vraiment débutant.
ps : c'est un programme sur console, si jamais ca change quelquechose
ps2 : Je suis vraiment débutant.
Ah ok, je ne savais pas, quand j'ai été inité au langage C on faisait juste:
int main()
{
//Instructions
system("pause");
}
Dans ton code tu as oublié un break au niveau du case 5.
Je crois pas que tu aies besoin d'initialiser tes variables à 0.
Je pense que tu devrais garder les même types que les nombres saisis au niveau de tes résultats. Pour le reste je chercher un compilateur et je regarde ce qui cloche.
int main()
{
//Instructions
system("pause");
}
Dans ton code tu as oublié un break au niveau du case 5.
Je crois pas que tu aies besoin d'initialiser tes variables à 0.
Je pense que tu devrais garder les même types que les nombres saisis au niveau de tes résultats. Pour le reste je chercher un compilateur et je regarde ce qui cloche.
J'ai essayé sans initialiser c'est la même chose. j'ai rajouté le break merci, même si ca ne resoud pas le problème.
content de savoir que ca marche au moins chez toi Mype.. mais pourquoi.. c'est la nouvelle question ^^
content de savoir que ca marche au moins chez toi Mype.. mais pourquoi.. c'est la nouvelle question ^^
je sais pas moi j'utilise code block et sa fonctionne parfaitement...
voici ce que ça donne
voici ce que ça donne
Bienvenue sur la super calculatrice. Choisissez maintenant le type de calcul que vous souhaitez faire: 1: Addition 2: Soustraction 3: Multiplication 4: Division 5: Racine carree 1 Choisissez le premier nombre a additionner. 2 Choisissez maintenant le deuxieme nombre a additionner. 3 Le resultat de votre addition est : 5.000000. Appuyez sur une touche pour continuer...
Salut, essaies ça, chez moi ça marche. Remarque, c'est un vrai bordel ton programme, ton main est rop lourd, il faudra penser à répartir en plusieurs fonctions ;-) à+ #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]){ int choixCalcul = 0; double nombre1, nombre2, resultatAdd, resultatSous, resultatMult, resultatDiv; printf("Bienvenue sur la super calculatrice.\n\n"); printf("Choisissez maintenant le type de calcul que vous souhaitez faire:\n"); printf("1: Addition\n"); printf("2: Soustraction\n"); printf("3: Multiplication\n"); printf("4: Division\n"); scanf("%d", &choixCalcul); switch (choixCalcul){ case 1:{ printf("Choisissez le premier nombre a additionner.\n"); scanf("%lf", &nombre1); printf("Choisissez maintenant le deuxieme nombre a additionner.\n"); scanf("%lf", &nombre2); resultatAdd = nombre1 + nombre2; printf("Le resultat de votre addition est : %f.\n", resultatAdd); }break; case 2:{ printf("Choisissez le premier nombre auquel un deuxieme sera soustrait.\n"); scanf("%lf", &nombre1); printf("Choisissez maintenant ce deuxieme nombre.\n"); scanf("%lf", &nombre2); resultatSous = nombre1 - nombre2; printf("Le resultat de votre soustraction est : %f.\n", resultatSous); } break; case 3:{ printf("Choisissez le premier nombre a multiplier.\n"); scanf("%lf", &nombre1); printf("Choisissez le deuxieme nombre a multiplier.\n"); scanf("%lf", &nombre2); resultatMult = nombre1 * nombre2; printf("Le resultat de votre multiplication est : %f.\n", resultatMult); } break; case 4:{ printf("Choisissez le numerateur.\n"); scanf("%lf", &nombre1); printf("Choisissez le denominateur.\n"); scanf("%lf", &nombre2); resultatDiv = nombre1 / nombre2; printf("Le resultat de votre division est : %f.\n", resultatDiv); } break; default: printf("Ca vous amuse? Je vous rapelle qu'il n'y a que 4 choix.\n"); break; } system("PAUSE"); return 0; }
Bon eh bien je suis rassuré , au moins j'ai develloppé un "programme" qui fonctionne bien, reste a savoir ce qui cloche sur ma machine :)
merci a tous d'avoir pris le temps d'inspecter mon code !
merci a tous d'avoir pris le temps d'inspecter mon code !
le %d c'est pour les int
et le %f pour les float