Language C

mec-marrakesh Messages postés 14 Statut Membre -  
$ Enzo $ Messages postés 359 Statut Membre -
Bonjour,

Svp ! j'exécute une division sur language C mais il m'affiche tjr 0 si a<b !!
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
int a , b , d ;
printf(" Entrez la valeur de a : ",a);
scanf("%i",&a);
printf(" Entrez la valeur de b : ",b);
scanf("%i",&b);
d = a/b;
printf("Valeur de d : %.2f\n",d);
getch();
}
aidé moi svp ! merciii

7 réponses

juliendangers Messages postés 246 Statut Membre 43
 
mon compilateur hurle :D
regarde le manuel de la fonction printf!
printf(" Entrez la valeur de b : ",b); 


le b sert absolument a rien!

scanf("%i",&a); 

je ferais ca avec un %d mais bon.

ensuite si tu réfléchis bien ton résultat est tout a fait logique!!!
si a<b alors d<1!
seulement d est un entier, or le seul entier inférieur à 1 est... 0
change le type de d et tout ira bien.
0
djmpro Messages postés 32 Statut Membre
 
i bien C pas INT C "float"
remplace le passage
------------------
int a , b , d ;
avec---------------
float a , b , d ;
----------------
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Bonjour,
Il vaut mieux utiliser des double, ou alors si tu souhaites utiliser des int pour a et b, il te faudra caster en double. De plus, tu n'as pas besoin de la fonction math.h.
Par exemple :
#include <stdio.h>
#include <stdlib.h>

int main(void) { /*modification*/
    double a ,b ,d; /*modification*/
    printf("Entrez la valeur de a : "); /*modification*/
    scanf("%lf",&a); /*modification*/
    printf(" Entrez la valeur de b : "); /*modification*/
    scanf("%lf",&b); /*modification*/
    if(b!=0) { /*modification*/
        d = a/b;
        printf("Valeur de d : %.2f\n",d);
    }
    else {
        printf("d=0, division impossible\n");
    }

    system("pause");
    return 0;
} 

Cdlt,
0
juliendangers Messages postés 246 Statut Membre 43
 
perso je doute que lui donner toute la solution l'aide bcp :s mais bon chacun son point de vue
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Je partage le même point de vue que toi. Ceci dit dans un programme aussi simple, je préfère donne un exemple sans faute histoire de prendre les bonnes habitudes et de pratiquer ensuite sur des algorithmes un peu plus dur (avec plus des conditions, des boucles, etc.). Mais chacun son point de vue comme tu dis...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
juliendangers Messages postés 246 Statut Membre 43
 
non mais tu n'as pas tort! Pour un tel programme en effet il vaut mieux qu'il ai la solution juste et qu'il comprenne son code ;)
0
mec-marrakesh Messages postés 14 Statut Membre
 
je vx dire ! si a<b
d = a/b
alr si on a donné 1 pour a et 2 pour b la réponse sera
d = 0.5
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Si a et b sont des int, alors la réponse sera 0.
0
$ Enzo $ Messages postés 359 Statut Membre 61
 
<math.h> ne te sers à rien dans ce cas présent, car la division est une opération de base.
0