CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Question en c++ (Important)

bambambigellow
bambambigellow
Niveau 8
28 septembre 2009 à 15:51:36

Bonjour, alors voilà j'avais un devoir à faire pour un de mes cours. Je l'ai terminé, cependant il y a un gros problème le calcul de mes sous, ne fonctionne pas.

Je comprend l'érreur, ces le fait que c'est une division par entier et que les chiffres après la virgule ne sont pas garder.

Pour faire court, le but du programme est de calculer le montant a remettre d'un achat effectuer (Je dois lui remettre X montant, qui se sépare en Y 1$, U 25cents, P 10cents...)

Je peut envoyer le cpp complet si vous me donner votre adresse mail.

Voilà un bout du code:

iMtRemettre = (fMtRemettre * 100); //Mets le montant float, dans une variable integer sans perte de donné
iMtRemettre2 = iMtRemettre;

i1Dollar = (iMtRemettre2 / 100);
if (i1Dollar >= 1)
{
cout << i1Dollar << " x 1$" << endl;
iMtRemettre = iMtRemettre - (i1Dollar * 100);
}

i25Cents = (iMtRemettre2 / 25);
if (i1Dollar >= 1)
{
cout << i25Cents <<" x 25 cents" << endl;
iMtRemettre = iMtRemettre - (i25Cents * 25);
}

i10Cents = (iMtRemettre2 / 10);
if (i1Dollar >= 1)
{
iMtRemettre = (iMtRemettre * 10);
cout << i10Cents << " x 10 cents" << endl;
iMtRemettre = iMtRemettre - (i10Cents * 10);
}

i5Cents = (iMtRemettre2 / 5);
if (i1Dollar >= 1)
{
cout << i5Cents << " x 5 cents" << endl;
iMtRemettre = iMtRemettre - (i5Cents * 5);
}

Lorsque le montant a remettre est 7.67$, les cents ne sont pas compter je ne peut donc pas savoir la séparation des sous que je doit remettre.

Merci
Bonne soirée

godrik
godrik
Niveau 30
28 septembre 2009 à 16:32:06

sans les types des variables on va avoir du mal a comprendre ce qui se passe.
mais le code sur pastebin.com

bambambigellow
bambambigellow
Niveau 8
28 septembre 2009 à 16:36:48

Voilà. Le code n'est pas propre propre encore, mais j'attend d'avoir fini avant de tout nettoyer.

N'utiliser pas de terme ou code avancer svp.

http://pastebin.com/d18b9a95c

Merci!

bambambigellow
bambambigellow
Niveau 8
28 septembre 2009 à 16:55:43

J'ai juste mis l'important. Ce sera plus facile:
http://pastebin.com/d651a5de

Donc je rapelle que l'utilisateur doit entrer un montant "fMtRemettre" et le programme va lui dire combien de $ et de sous je dois lui remettre.

5$, 2$, 1$, 25cents, 10cents, 5cents, 1cent.

godrik
godrik
Niveau 30
28 septembre 2009 à 17:00:43

je pense que tu as une confusion dans ton programme entre iMtRemettre2 et iMtRemettre. J'ai l'impression qu'ils ne sont pas mis a jour comme il faut.

A part ca, la logique et les type me semble correcte.

bambambigellow
bambambigellow
Niveau 8
28 septembre 2009 à 17:04:58

Pour mon iMtRemettre2, j'ai seulement fait un essaie. Je l'ai modifier dans mon second lien.

La logique est bonne, cependant j'ai une perte de donner lorsque je fait:

iMtRemettre = (fMtRemettre * 100);
i1Dollar = (iMtRemettre / 100);
if (i1Dollar >= 1)
{
cout << i1Dollar << " x 1$" << endl;
iMtRemettre = iMtRemettre - (i1Dollar * 100);
}

Si je prend 1.68$
1.68 x 100 = 168
168 / 100 = 1$
Donc i1Dollar = 1
En faisant cela, je perd le 0.68$ donc il ne voit pas que je doit avoir 2x 25cents, 1x 10cents, 1x5cents, 3x1cent.

Vous comprennez? C'est là le problème et je doit trouver une solution d'ici une heure.

1

godrik
godrik
Niveau 30
28 septembre 2009 à 17:27:07

Si je prend 1.68$
1.68 x 100 = 168
168 / 100 = 1$
Donc i1Dollar = 1

Bah c'est exactement ce que tu veux faire non ?
c'est pour tenir compte de ca que tu fais plus tard:
iMtRemettre = iMtRemettre - (i1Dollar * 100);
...
je ne comprends toujours pas bien...

bambambigellow
bambambigellow
Niveau 8
28 septembre 2009 à 17:28:56

C'est ce que je veut. Mais je veut faire la même chose pour les cents.

Le probleme en ce moment, ces que le programme fonctionne seulement pour les entiers, pas pour les chiffre a virgules

godrik
godrik
Niveau 30
28 septembre 2009 à 17:50:33

j'ai l'impression que imtremettre vaut 68 a la fin de ton if. Et j'ai l'impression que c'est ce que tu veux...

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment