Language C

Fermé
mec-marrakesh Messages postés 12 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 8 mars 2010 - 7 mars 2010 à 16:21
$ Enzo $ Messages postés 333 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 9 janvier 2011 - 7 mars 2010 à 17:54
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 lundi 30 juin 2008 Statut Membre Dernière intervention 28 octobre 2011 43
7 mars 2010 à 16:38
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 mercredi 17 février 2010 Statut Membre Dernière intervention 25 octobre 2010
7 mars 2010 à 16:40
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
7 mars 2010 à 16:52
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 lundi 30 juin 2008 Statut Membre Dernière intervention 28 octobre 2011 43
7 mars 2010 à 16:55
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
7 mars 2010 à 17:07
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 lundi 30 juin 2008 Statut Membre Dernière intervention 28 octobre 2011 43
7 mars 2010 à 17:09
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 mercredi 21 octobre 2009 Statut Membre Dernière intervention 8 mars 2010
7 mars 2010 à 17:37
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
7 mars 2010 à 17:51
Si a et b sont des int, alors la réponse sera 0.
0
$ Enzo $ Messages postés 333 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 9 janvier 2011 61
7 mars 2010 à 17:54
<math.h> ne te sers à rien dans ce cas présent, car la division est une opération de base.
0