Problème programme en langage C

ChrisGallagher

Touriste
Bisoir! Mon programme n'a aucunes erreurs(de détectées) mais mon programme se coupe après avoir donné les informations au second printf ( donc "cela donne 524 euros et 36cents" par exemple)

Ps: débutant en progra j'ai commencé ma première année d'informatique de gestion en septembre^^

Si quelqu'un a l'occasion de m'aider ce serait fort aimable!

Vous pouvez voir mon code ici : http://pastebin.com/kR7mT3Ad

Merci d'avance si quelqu'un a quelques minutes à me consacrer:-D
 

Skarbone

Le méchant Ω
rien que

euros = choix;
cents = (choix - euros)*100;

y'a un soucis la. Je pige pas ce que tu veux faire, mais avec ton code, cents vaudra invariablement 0: (x-x) * 100 => 0 * 100 => 0...

M'enfin ca peut pas faire planter.

t'as quoi comme message d'erreur?
 
1er
OP
ChrisGallagher

ChrisGallagher

Touriste
C'es tmon prof qui m'a mis ca enfait j'ai pas compris sur le fait egalement. En fait il a mis ca car je veux faire du modulo et on ne peux pas faire ca avec du float , or ma valeur de base que j'inscris a des centimes donc j'ai besoin du float et ca contrarie ma formule avec le modulo apres. ( Je sais pas si je suis clair^^), donc il a fais ca pour passer d'un float à une valeur entière c'est le programme qui se coupe ( " a cessé de fonctionner")
 
1er
OP
ChrisGallagher

ChrisGallagher

Touriste
rien que

euros = choix;
cents = (choix - euros)*100;

y'a un soucis la. Je pige pas ce que tu veux faire, mais avec ton code, cents vaudra invariablement 0: (x-x) * 100 => 0 * 100 => 0...

M'enfin ca peut pas faire planter.

t'as quoi comme message d'erreur?
choix - euros ne donnera pas 0 ^^ 505.32 - 505 donnera 0.32*100 = les 32 centimes (si je me trompe pas je suis pas sure)
 

Skarbone

Le méchant Ω
bah si euros = choix, alors choix - euros = 0...
 
1er
OP
ChrisGallagher

ChrisGallagher

Touriste
bizarre pourtant si je tape 505.69 dans la console , il m'affiche bien que ca fera 505 euros et 69 cents dans le printf mais c'est la que ca coup , si c'était 0 ca n'aurais pas affiché ca je me trompe?^^


Et mais... attends c'est pas con enfait T_T , que m'a t-il fait la mon prof ..^^
 

wardog02

Fanatique
bah non, euro est un entier, on "cast" choix qui est un float dans un entier, => on perds les décimales

=> (502,35 -502) * 100 = 35 cents
 

Skarbone

Le méchant Ω
Effectivement, j'avais pas grillé que choix était un float :)

Note qu'alors j'aurais trouvé plus logique de faire

cents = (choix%1) * 100
 
1er
OP
ChrisGallagher

ChrisGallagher

Touriste
Choix reste un float, donc l'erreur vient de ces deux phrases que tu trouves bizarre car il la lit comme un float au lieu de le lire en entier ^^

ces\main.c|11|error: invalid operands to binary % (have 'float' and 'int')|

||=== Build finished: 1 errors, 0 warnings ===|
 

wardog02

Fanatique
Je ne pense pas que tu puisses faire un modulo sur un float
 
1er
OP
ChrisGallagher

ChrisGallagher

Touriste
ben enfait d'après le prof le "euros = choix;" allait me le permettre mais je vais refaire tout ca en virant le modulo je suis quasi sure que c'est ça qui fait foirer^^

Merci en tout cas les gars :)
 

Skarbone

Le méchant Ω
boaf, fmod() alors :)
 
1er
OP
ChrisGallagher

ChrisGallagher

Touriste
On a pas encore vu ca mais merci quand même pour l'astuce :p
 

La Poubelle

Pou'r allé Danché
Quand je vois un tel code juste pour essayer d'expliquer un modulo, ton prof me fait peur ... Ils l'ont recyclé à l'assemblage.
 

kronoss

Geek power
Pour ceux qui ont l'habitude de travailler en POO, vous avez pas du mal quand vous repassez en procédural ? Perso, quand j'ai vu son exercice autant en POO je le fait en 2 min, autant en procédural comme ci-dessus il m'a fallu plus de temps malgrés que la logique derrière est la même.

Je sais pas trop comment vous expliquer ça.
 
Haut