Rechercher : dans
Par :

Probleme programme console c

Dernière réponse le 12 nov 2009 à 22:55:03 dialga08, le 11 nov 2009 à 23:20:49 
 Signaler ce message aux modérateurs

Bonjour,
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

Meilleures réponses pour « probleme programme console c » dans :
Compiler un programme en C avec Dev C++ sous Vista VoirIl est très probable que vous ayez des problèmes lors de la compilation d'une source C sous Vista avec Dev C++. Solution rapide de secours: le compilateur g++ Voici une astuce pour Dev-Cpp : Aller dans "Outils" -> "Options du compilateur" puis...

1

skuti, le 12 nov 2009 à 00:46:38

C'est normale !
resultatt est un double et dans ton printf tu utilise %d alors qu'il faudrais utilisé %lf

Répondre à skuti

2

fiddy, le 12 nov 2009 à 07:11:33

Salut,
Il faut plutôt utiliser %f ;-)))

cdlt
Google is your friend

Répondre à fiddy

3

dialga08, le 12 nov 2009 à 17:03:15

Sa ne fonctionne pas

EDIT:avec double il m'affiche 0.0000000 meme en remplacant %d par %f

Répondre à dialga08

4

dialga08, le 12 nov 2009 à 17:20:31

Il n' y a pas quelqu'un d'experimenter qui pourrais me repondre svp merci

Répondre à dialga08

5

adnanforum, le 12 nov 2009 à 17:39:03

O lieu de mettre sqrt tu devrer mettre le calcule.merci de pressicer devc++ ou codeblocks

Répondre à adnanforum

6

skuti, le 12 nov 2009 à 17:53:11

Met ceci:

double resultatt = 0;
int nombre = 0;


scanf("%d", &nombre);
resultatt = sqrt((double)nombre);

printf("Racine carré de %d = %f ",nombre,resultatt);

Répondre à skuti

8

fiddy, le 12 nov 2009 à 20:00:22

resultatt = sqrt((double)nombre);
Le cast est inutile puisqu'implicite.

Cdlt
Google is your friend

Répondre à fiddy

7

fiddy, le 12 nov 2009 à 19:59:24

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 Google is your friend

Répondre à fiddy

9

skuti, le 12 nov 2009 à 20:06:06

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

Répondre à skuti

13

fiddy, le 12 nov 2009 à 21:42:56

Normal, l'erreur est situé comme je l'ai dit plus haut.
Dans certains cas effectivement il faut caster, mais celui-là n'en fait clairement pas partie.
Google is your friend

Répondre à fiddy

10

samar83, le 12 nov 2009 à 20:14:39

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:...........;

Répondre à samar83

11

dialga08, le 12 nov 2009 à 20:37:16

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..

Répondre à dialga08

12

skuti, le 12 nov 2009 à 21:04:30

Parceque racine carré de 1 egale 1 !!!

Répondre à skuti

14

dialga08, le 12 nov 2009 à 22:53:07

Merci a tous pour m'avoir aider
racine carré de 1 = 1 lol

Répondre à dialga08

15

fiddy, le 12 nov 2009 à 22:54:48

Je retiens à rajouter que :
double resultatt = 0;
int nombre = 0;


scanf("%d", &nombre);
resultatt = sqrt((double)nombre);

printf("Racine carré de %d = %f ",nombre,resultatt);


Le cast de nombre en double est facultatif ;-))).

Cdlt
Google is your friend

Répondre à fiddy

16

 adnanforum, le 12 nov 2009 à 22:55:03

Derien crane de cp

Répondre à adnanforum