Language C

mec-marrakesh Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
$ Enzo $ Messages postés 333 Date d'inscription   Statut Membre Dernière intervention   -
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 226 Date d'inscription   Statut Membre Dernière intervention   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 27 Date d'inscription   Statut Membre Dernière intervention  
 
i bien C pas INT C "float"
remplace le passage
------------------
int a , b , d ;
avec---------------
float a , b , d ;
----------------
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 226 Date d'inscription   Statut Membre Dernière intervention   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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 226 Date d'inscription   Statut Membre Dernière intervention   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 12 Date d'inscription   Statut Membre Dernière intervention  
 
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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Si a et b sont des int, alors la réponse sera 0.
0
$ Enzo $ Messages postés 333 Date d'inscription   Statut Membre Dernière intervention   61
 
<math.h> ne te sers à rien dans ce cas présent, car la division est une opération de base.
0