ptiniko
Messages postés26Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention 8 juillet 2009
-
23 avril 2008 à 22:34
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 2010
-
24 avril 2008 à 16:11
Bonjour ou bonsoir, c'est selon.
Voilà, je suis, comme qui dirait, débutant dans l'apprentissage du C/C++. Et j'ai un problème (nan sans blague?).
En fait, voilà mon code (j'ai pas précisé il s'agit d'une caltos en mode console):
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long ChoixMenu= 0;
double Nombre1=0;
double Nombre2=0;
long Resultat=0;
switch (ChoixMenu)
{case 1:
printf ("Veuillez entrer le premier nombre: \n");
scanf ("%lf", &Nombre1);
printf ("Veuillez entrer le deuxieme nombre: \n");
scanf ("%lf", &Nombre2);
Resultat = Nombre1 + Nombre2;
printf ("Le resultat est donc: \n%lf + %lf = %ld \n", Nombre1, Nombre2, Resultat);
break;
case 2:
printf ("Veuillez entrer le premier nombre: \n");
scanf ("%lf", &Nombre1);
printf ("Veuillez entrer le deuxieme nombre: \n");
scanf ("%lf", &Nombre2);
Resultat = Nombre1 - Nombre2;
printf ("Le resultat est donc: \n%lf - %lf = %ld \n", Nombre1, Nombre2, Resultat);
break;
case 3:
printf ("Veuillez entrer le premier nombre: \n");
scanf ("%lf", &Nombre1);
printf ("Veuillez entrer le deuxieme nombre: \n");
scanf ("%lf", &Nombre2);
Resultat = Nombre1 * Nombre2;
printf ("Le resultat est donc: \n%lf * %lf = %ld \n", Nombre1, Nombre2, Resultat);
break;
case 4:
printf ("Veuillez entrer le premier nombre: (format 0.00)\n");
scanf ("%lf", &Nombre1);
printf ("Veuillez entrer le deuxieme nombre: (format O.OO)\n");
scanf ("%lf", &Nombre2);
Resultat = Nombre1 / Nombre2;
printf ("Le resultat est donc: \n%lf / %lf = %ld \n", Nombre1, Nombre2, Resultat);
break;
default:
printf ("Votre choix n'est pas correct. \n");
break;
}
system("PAUSE");
return 0;
}
Déjà j'ai un souci au niveau de la déclaration de mes nombre1 et nombre2. Là comme vous le voyez, si je les déclare en tant que double ca passe sauf que dans mon résultat il m'affiche un truc du genre 2,00000 * 2,00000 = 4
Si j'essaye de les déclarer en tant que n'importe quoi d'autre, la ca marche pu du tout. Genre je veux 2*2, il m'affiche 0,4867467576784*0,0000000001 = 4,5980
Logique hin?
Enfin voila déjà c'est un premier souci. Ensuite j'aimerai permettre à l'utilisateur de revenir au Menu, sauf qu'on m'a dit que utiliser le goto c'était vraiment pas recommandé du tout. Donc je bloque.
Enfin une fois que j'aurai réussi ca, je pourrais m'attaquer à le faire en interface graphique, et la question que je me pose c'est est ce que mon code la, il va servir pour ca ou pas du tout ?
cephalic
Messages postés38Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention25 avril 2008 24 avril 2008 à 09:59
Bonjour les doubles sont des nombres a virgules et les long des entiers.
vérifie bien les types de tes printf quand tu affiches si tu as mis 2 et 2 tes variables contiennent 2 et 2 mais tu as du te tromper sur l'affichage.
Pour revenir au menu tu peux mettre ton code dans un while(1)
a la fin de chaque calcul tu reviendras au menu.
Les goto sont deconseillés c'est vrai surtout pour un débutant.
Pour la partie graphique je ne sais pas si ton algo tel quel te servira sa dépend quel librairie graphique tu utilise.
Mais c'est pâs bien compliquer à réécrire