Probleme programme console c
Résolu
dialga08
Messages postés
481
Statut
Membre
-
adnanforum Messages postés 204 Date d'inscription Statut Membre Dernière intervention -
adnanforum Messages postés 204 Date d'inscription Statut Membre Dernière intervention -
bonjour,
quand je choisi racine carre,j'entre le nombre et le resultat affiche 0
comment regler ce probleme
voici mon code...
merci
quand je choisi racine carre,j'entre le nombre et le resultat affiche 0
comment regler ce probleme
voici mon code...
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int resultat = 0,nombre1 = 0,nombre2 = 0;
double resultatt = 0,nombre = 0;
int choix_menu = 0;
printf("CHOIX DE VOTRE OPERATION");
printf("\n\n1.addition\n");
printf("2.soustraction\n");
printf("3.multiplication\n");
printf("4.division\n");
printf("5.racine carre\n");
scanf("%d",&choix_menu);
switch(choix_menu)
{
case 1:
printf("entrer le premier terme\n");
scanf("%d",&nombre1);
printf("entrer le deuxieme terme\n");
scanf("%d",&nombre2);
resultat = nombre1 + nombre2;
printf("\n%d + %d = %d\n",nombre1,nombre2,resultat);
default:
break;
//separation
case 2:
printf("entrer le premier terme\n");
scanf("%d",&nombre1);
printf("entrer le deuxieme terme\n");
scanf("%d",&nombre2);
resultat = nombre1 - nombre2;
printf("\n%d - %d = %d\n",nombre1,nombre2,resultat);
break;
//separation
case 3:
printf("entrer le premier facteur\n");
scanf("%d",&nombre1);
printf("entrer le deuxieme facteur\n");
scanf("%d",&nombre2);
resultat = nombre1 * nombre2;
printf("\n%d * %d = %d\n",nombre1,nombre2,resultat);
break;
//separation
case 4:
printf("entrer le dividante\n");
scanf("%d",&nombre1);
printf("entrer le diviseur\n");
scanf("%d",&nombre2);
resultat = nombre1 / nombre2;
printf("\n%d / %d = %d\n",nombre1,nombre2,resultat);
break;
//separation
case 5:
printf("entrer le nombre\n");
scanf("%d",&nombre);
resultatt = sqrt(nombre);
printf("\nracine carre de %d = %d\n",nombre,resultatt);
break;
}
return = 0;
}
merci
A voir également:
- Probleme programme console c
- Programme demarrage windows - Guide
- Test console steam deck - Guide
- Programme word gratuit - Guide
- Console action - Accueil - Jeu vidéo
- Console mac - Guide
12 réponses
C'est normale !
resultatt est un double et dans ton printf tu utilise %d alors qu'il faudrais utilisé %lf
resultatt est un double et dans ton printf tu utilise %d alors qu'il faudrais utilisé %lf
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
met ceci:
double resultatt = 0;
int nombre = 0;
scanf("%d", &nombre);
resultatt = sqrt((double)nombre);
printf("Racine carré de %d = %f ",nombre,resultatt);
Salut,
Après relecture du programme, l'erreur vient de trois endroits.
scanf("%lf",&nombre);
printf("\nracine carre de %f = %f\n",nombre,resultatt);
Tu as mis des doubles en arguments, donc tu vas empiler 2*sizeof(double) dans la pile. La fonction printf va déchiffrer le pattern %d %d (que tu avais mis dans ton premier programme). Lors du premier %d, il va se référer aux premiers bits (première partie du double puisque le double est plus grand que l'integer), et le deuxième %d va se référer sur la suite (donc deuxième partie des bits). Et la deuxième partie est souvent à 0 puisque la précision est grande, tu vois 0 qui s'affiche.
Et enfin, attention, tu as mis return = 0; au lieu de return 0;
Cdlt
Après relecture du programme, l'erreur vient de trois endroits.
scanf("%lf",&nombre);
printf("\nracine carre de %f = %f\n",nombre,resultatt);
Tu as mis des doubles en arguments, donc tu vas empiler 2*sizeof(double) dans la pile. La fonction printf va déchiffrer le pattern %d %d (que tu avais mis dans ton premier programme). Lors du premier %d, il va se référer aux premiers bits (première partie du double puisque le double est plus grand que l'integer), et le deuxième %d va se référer sur la suite (donc deuxième partie des bits). Et la deuxième partie est souvent à 0 puisque la précision est grande, tu vois 0 qui s'affiche.
Et enfin, attention, tu as mis return = 0; au lieu de return 0;
Cdlt
je ne suis pas d'accord avec vous puisqu'en fonction des logiciel il y a quelque bug.
Sous code bloc sa ne fonctionne pas toujours.
Comme j'ai pus le tester sur code blocks en mettant %lf partout et en declarant mes variables en double j'obtenais 0 a chaque fois.
C'est pour sa que j'ai posté ce code
Sous code bloc sa ne fonctionne pas toujours.
Comme j'ai pus le tester sur code blocks en mettant %lf partout et en declarant mes variables en double j'obtenais 0 a chaque fois.
C'est pour sa que j'ai posté ce code
bonsoir,
pourkoi mettre default au milieu de switch? essaye de le mettre en dernier lieu après case 5!
c-a-d: case 1: .........;
case 2:........;
case 3:..........;
case 4:.........;
case 5:..........;
default:...........;
pourkoi mettre default au milieu de switch? essaye de le mettre en dernier lieu après case 5!
c-a-d: case 1: .........;
case 2:........;
case 3:..........;
case 4:.........;
case 5:..........;
default:...........;
Met ceci:
double resultatt = 0;
int nombre = 0;
scanf("%d", &nombre);
resultatt = sqrt((double)nombre);
printf("Racine carré de %d = %f ",nombre,resultatt);
quand je rentre "1"
il n'afiche que l'entier donc 1.00000000..
Il faut plutôt utiliser %f ;-)))
cdlt