Mein Problem ist das der float einen falschen Wert hat.
Der float ist dann z.B. 0.1000000001 anstatt einfach 0.1000000000.
Was kann man da machen?
Hier mein Code.
Code
#include <iostream>
using namespace std;
int main()
{
int wahl = 0;
float preis = 0.0, einwurf1 = 0.0;
cout << "Getraenkeautomat" << endl;
cout << "Waehlen sie ihr Getraenk aus:" << endl;
cout << "1. Wasser (0,50 Euro)" << endl;
cout << "2. Limonade (1,00 Euro)" << endl;
cout << "3. Bier (2,00 Euro)" << endl << endl;
cout << "Bitte waehlen sie ein Getraenk aus: ";
cin >> wahl;
if (wahl == 1 || wahl == 2 || wahl == 3)
{
switch(wahl)
{
case 1:
preis = 0.50;
cout << "Sie haben 1. Wasser gewaehlt. Bitte zahlen sie (0,50 Euro)" << endl;
cout << "Einwurf: ";
cin >> einwurf1;
if (einwurf1 == preis)
{
cout << "Danke. Bitte entnehmen sie ihr Getraenk!";
break;
}
else if (einwurf1 < preis)
{
float rest = preis - einwurf1;
float rueckgabe = 0.0;
do
{
float einwurf2 = 0.0;
cout << "Es fehlen: " << rest << endl;
cout << "Einwurf: ";
cin >> einwurf2;
rueckgabe = einwurf1 + einwurf2;
rest -= einwurf2;
einwurf1 = 0.0;
}while (rest > 0.00);
if (rueckgabe == preis)
{
cout << "Danke. Bitte entnehmen sie ihr Getraenk!";
}else if (rueckgabe > preis)
{
cout << "Danke. Bitte entnehmen sie ihr Getraenk!" << endl;
cout << "Ihr Wechselgeld betraegt: " << rueckgabe - preis;
}
//cout << "Es fehlen: " << preis - einwurf1 << endl;
//cout << "Schade versuchen sie es wenn sie genug Geld haben";
break;
}
else if (einwurf1 > preis)
{
cout << "Danke. Bitte entnehmen sie ihr Getraenk!" << endl;
cout << "Ihr Wechselgeld betraegt: " << einwurf1 - preis << " Euro" << endl;
break;
}
case 2:
preis = 1.00;
cout << "Sie haben 2. Limonade gewaehlt. Bitte zahlen sie (1,00 Euro)" << endl;
cout << "Einwurf: ";
cin >> einwurf1;
if (einwurf1 == preis)
{
cout << "Danke. Bitte entnehmen sie ihr Getraenk!";
break;
}
else if (einwurf1 < preis)
{
cout << "Es fehlen: " << preis - einwurf1 << endl;
cout << "Schade versuchen sie es wenn sie genug Geld haben";
break;
}
else if (einwurf1 > preis)
{
cout << "Danke. Bitte entnehmen sie ihr Getraenk!" << endl;
cout << "Ihr Wechselgeld betraegt: " << einwurf1 - preis << " Euro" << endl;
break;
}
case 3:
preis = 2.00;
cout << "Sie haben 3. Bier gewaehlt. Bitte zahlen sie (2,00 Euro)" << endl;
cout << "Einwurf: ";
cin >> einwurf1;
if (einwurf1 == preis)
{
cout << "Danke. Bitte entnehmen sie ihr Getraenk!";
break;
}
else if (einwurf1 < preis)
{
cout << "Es fehlen: " << preis - einwurf1 << endl;
cout << "Schade versuchen sie es wenn sie genug Geld haben";
break;
}
else if (einwurf1 > preis)
{
cout << "Danke. Bitte entnehmen sie ihr Getraenk!" << endl;
cout << "Ihr Wechselgeld betraegt: " << einwurf1 - preis << " Euro" << endl;
break;
}
}
} else { cout << "Falsche Eingabe!";}
getchar();
getchar();
return 0;
}
Alles anzeigen