So Kopf qualmt. Danke für die Tipps.
Beiträge von doctorjekyll
-
-
Und so mit listen.
C
Alles anzeigen#include <iostream> #include <list> using namespace std; int main() { int dezimal = 0; list<int> meinelist; list<int>::iterator it; cout << "Geben Sie eine Dezimalzahl ein: "; cin >> dezimal; while(dezimal > 0) { meinelist.push_front(dezimal%2); dezimal /= 2; } cout << "Binzahl: "; for(it = meinelist.begin(); it != meinelist.end(); it++) { cout << *it; } getchar(); getchar(); return 0; }
-
Also so denke ich mal.
C
Alles anzeigen#include <iostream> #include <vector> using namespace std; int main() { int dezimal = 0; vector<int> meinvector; cout << "Geben Sie eine Dezimalzahl ein: "; cin >> dezimal; while(dezimal > 0) { meinvector.push_back(dezimal%2); dezimal /= 2; } cout << "Binzahl: "; for(int i = (meinvector.size() -1); i >= 0; i--) { cout << meinvector[i]; } getchar(); getchar(); return 0; }
-
Hier mein Code.
C
Alles anzeigen#include <iostream> #include <string> #include <sstream> using namespace std; void umkehren(string &ref); int main() { int dezimal = 0; string meinString = ""; stringstream rest; rest.str(""); cout << "Bitte geben Sie eine Dezimalzahl ein: "; cin >> dezimal; while(dezimal > 0) { rest << dezimal%2; dezimal /= 2; } meinString = rest.str(); cout << "Bin\x84rzahl: "; umkehren(meinString); getchar(); getchar(); return 0; } void umkehren(string &ref) { for(int i = (ref.size() -1); i >= 0; i--) { cout << ref[i]; } }
-
Ok Problem gelöst.
Mit stringstream geht das ja ganz leicht. -
Also mein Problem ist ich hab eine Berechnung und möchte das Ergebniss jedesmal nach der Berechnung an einen String anhängen.
Danach den String umgekehrt ausgeben. Den String umgekehrt ausgeben geht schon mal. Fehlt nur noch wie ich das bei jeder Wiederholung der Schleife das Ergebniss an den String anhänge.So soll das in etwa aussehen.
Schleife {
Berechnung;
ErgebnissBerechnung an den String anhängen;
}umkehren(String);
cout << String;Wie kann man das effektiv umsetzen?
-
Hmm irgendwie geht das nicht.
Wenn ich immer 0.1 eingebe ist
rest = -1.4901161e-008 und nicht rest = 0wie vorher auch.
PS: Mir gefällt die Lösung ja auch nicht.
-
Ah ok danke für die schnelle Antwort.
Hab das jetzt etwas anders gelöst.Mein fertiges Programm.
C
Alles anzeigen#include <iostream> #include <cmath> using namespace std; const float preiswasser = 0.5; const float preislimonade = 1.0; const float preisbier = 2.0; double round(double value, int precision) { double multiplier(pow(10.0, precision)); return floor(value * multiplier + 0.5) / multiplier; } int main() { int wahl = 0; float einwurf1 = 0; cout << "Getraenkeautomat" << endl << endl; cout << "1. Wasser " << preiswasser << " Euro" << endl; cout << "2. Limonade " << preislimonade << " Euro" << endl; cout << "3. Bier " << preisbier << " Euro" << endl << endl; cout << "Bitte waehlen sie ein Getraenk aus: "; cin >> wahl; cout << endl; if (wahl == 1 || wahl == 2 || wahl == 3) { switch(wahl) { case 1: cout << "Sie haben 1. Wasser gewaehlt. Bitte zahlen sie " << preiswasser << " Euro" << endl << endl; cout << "Einwurf: "; cin >> einwurf1; cout << endl; if (einwurf1 == preiswasser) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!"; break; }else if (einwurf1 < preiswasser) { float rest = preiswasser - einwurf1; float rueckgabe = 0; do { float einwurf2 = 0; cout << "Es fehlen: " << rest << " Euro" << endl << endl; cout << "Einwurf: "; cin >> einwurf2; cout << endl; rueckgabe += (einwurf1 + einwurf2); rest = round(rest - einwurf2, 2); einwurf1 = 0; }while (rest > 0); if (rueckgabe == preiswasser) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!"; }else if (rueckgabe > preiswasser) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!" << endl; cout << "Ihr Wechselgeld betraegt: " << rueckgabe - preiswasser << " Euro"; } break; }else if (einwurf1 > preiswasser) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!" << endl; cout << "Ihr Wechselgeld betraegt: " << einwurf1 - preiswasser << " Euro" << endl; break; } case 2: cout << "Sie haben 2. Limonade gewaehlt. Bitte zahlen sie " << preislimonade << " Euro" << endl << endl; cout << "Einwurf: "; cin >> einwurf1; cout << endl; if (einwurf1 == preislimonade) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!"; break; }else if (einwurf1 < preislimonade) { float rest = preislimonade - einwurf1; float rueckgabe = 0; do { float einwurf2 = 0; cout << "Es fehlen: " << rest << " Euro" << endl << endl; cout << "Einwurf: "; cin >> einwurf2; cout << endl; rueckgabe += (einwurf1 + einwurf2); rest = round(rest - einwurf2, 2); einwurf1 = 0; }while (rest > 0); if (rueckgabe == preislimonade) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!"; }else if (rueckgabe > preislimonade) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!" << endl; cout << "Ihr Wechselgeld betraegt: " << rueckgabe - preislimonade << " Euro"; } break; }else if (einwurf1 > preislimonade) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!" << endl; cout << "Ihr Wechselgeld betraegt: " << einwurf1 - preislimonade << " Euro" << endl; break; } case 3: cout << "Sie haben 3. Bier gewaehlt. Bitte zahlen sie " << preisbier << " Euro)" << endl << endl; cout << "Einwurf: "; cin >> einwurf1; cout << endl; if (einwurf1 == preisbier) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!"; break; }else if (einwurf1 < preisbier) { float rest = preisbier - einwurf1; float rueckgabe = 0; do { float einwurf2 = 0; cout << "Es fehlen: " << rest << " Euro" << endl << endl; cout << "Einwurf: "; cin >> einwurf2; cout << endl; rueckgabe += (einwurf1 + einwurf2); rest = round(rest - einwurf2, 2); einwurf1 = 0; }while (rest > 0); if (rueckgabe == preisbier) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!"; }else if (rueckgabe > preisbier) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!" << endl; cout << "Ihr Wechselgeld betraegt: " << rueckgabe - preisbier << " Euro"; } break; }else if (einwurf1 > preisbier) { cout << "Danke. Bitte entnehmen sie ihr Getraenk!" << endl; cout << "Ihr Wechselgeld betraegt: " << einwurf1 - preisbier << " Euro" << endl; break; } } }else { cout << "Falsche Eingabe!";} getchar(); getchar(); return 0; }
-
Hier noch eben fix überarbeitet.
Code
Alles anzeigen#include <iostream> using namespace std; int main() { int wahl = 0; float preis = 0.0, einwurf1 = 0.0; cout << "Getraenkeautomat" << endl << 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; cout << endl; 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 << endl; cout << "Einwurf: "; cin >> einwurf1; cout << endl; 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 << " Euro" << endl << endl; cout << "Einwurf: "; cin >> einwurf2; cout << endl; rueckgabe = einwurf1 + einwurf2; rest -= einwurf2; einwurf1 = 0.0; }while (rest > 0.00); //(rueckgabe != preis || rueckgabe > preis); 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 << " Euro"; } 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 << endl; cout << "Einwurf: "; cin >> einwurf1; cout << endl; 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 << endl; cout << "Einwurf: "; cin >> einwurf1; cout << endl; 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; }
Ich habe eingegeben: 0.3
doch die variable hat dann den Wert:
einwurf1 0.30000001 float -
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
Alles anzeigen#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; }