Void wird nicht beachtet
-
Hallo,
ich habe das Problem, dass ich für die Schule ien kleines Programm in C++ schreiben soll...nun habe ich folgendes Problem:
Das Proogramm stellt den Benutzer als erstes vor die Frage ob er Währung oder Temperatur umrechnen möchte. Danach soll eine zweite Abfrage stattfinden...doch egal ob der Benutzer 1 oder 2 wählt...es wird immer die Abfrage für 2 ausgeführt...ich weiss nicht was ich falsch gemacht habe...hier der Code.#include <iostream> #include <cstdlib> #include <conio.h> using namespace std; void waehrung(); void temperatur(); int main(void) { cout << "Umrechner" << endl << " " << endl << "Was wollen sie umrechnen?" << endl << " " << endl << "\t1. Waehrung" << endl << "\t2. Temperatur" << endl; char Auswahl = getch(); if(Auswahl == 1) { waehrung(); } else { temperatur(); } cin.sync(); cin.get(); return 0; } void waehrung() { float euro; float dollarE; cout << " " << endl << "Wollen sie Euro in Dollar oder Dollar in Euro umrechnen ?" << endl << "\t1. Euro/Dollar" << endl << "\t2. Dollar/Euro" << endl; char Auswahl2 = getch(); if(Auswahl2 == 1) { cout << "Bitte geben sie einen Wert in Euro ein." << endl; cin >> euro; getchar (); dollarE = euro * 1,17072; cout << euro << " Euro sind " << dollarE << " Dollar." ; } else { float dollar; float euroE; cout << "Bitte geben sie einen Wert in Dollar ein." << endl; cin >> dollar; getchar (); euroE = dollar * 1,17072; cout << dollar << " Dollar sind " << euroE << " Euro." ; } cin.sync(); cin.get(); } void temperatur() { cout << " " << endl << "Wollen sie Celsius in Fahrenheit oder Fahrenheit in Celsius umrechnen ?" << endl << "\t1. Celsius/Fahrenheit" << endl << "\t2. Fahrenheit/Celsius" << endl; char Auswahl3 = getch(); if(Auswahl3 == 1) { float celsius; float fahrenheitE; cout << "Bitte geben sie einen Wert in Grad Celsius ein." << endl; cin >> celsius; getchar(); fahrenheitE = 1.8 * celsius + 32; cout << celsius << " Grad Celsius sind " << fahrenheitE << " Grad Fahrenheit. "; } else { float fahrenheit; float celsiusE; cout << "Bitte geben sie einen Wert in Grad Fahrenheit ein." << endl; cin >> fahrenheit; getchar(); celsiusE = (fahrenheit - 32) / 1.8; cout << fahrenheit << " Grad Fahrenheit sind " << celsiusE << " Grad Celsius."; } cin.sync(); cin.get(); }
Danke für eure Hilfe.
-
Void wird nicht beachtet
Was willst du damit sagen?
Auswahl ist ein char. Wenn du testen willst, ob du eine 1 eigeben hast, musst du gegen das Zeichen 1 testen:
if(Auswahl == '1')
-
was soll denn dieser Titel?!
Weißt du was Datentypen sind? Welche kennst du?
-
Danke...ich habe nur die ' Zeichen vergessen.
-
Fließkommazahlen sind der denkbar schlechteste Datentyp für Geldbeträge. Rechne als einfache Alternative am besten in (ganzen) Cent, Zehntelcent, oder ähnlichem.
cin.sync() wird auf vielen Systemen schlicht gar nichts tun.
dollar * 1,17072
ist nicht gleichdollar * 1.17072
, sondern das Ergebnis ist17072
.Und gewiss noch vieles andere, die zufällige Einrückung des Codes macht ihn unnötig schwer lesbar, daher habe ich ihn nur stellenweise überflogen.
-
SeppJ schrieb:
dollar * 1,17072
ist nicht gleichdollar * 1.17072
, sondern das Ergebnis ist17072
.Das Ergebnis ist dollar.
-
Jockelx schrieb:
SeppJ schrieb:
dollar * 1,17072
ist nicht gleichdollar * 1.17072
, sondern das Ergebnis ist17072
.Das Ergebnis ist dollar.
So wie ich es geschrieben habe, stimmt das schon. Das Ergebnis des Ausdrucks
dollar * 1,17072
ist17072
. Aber der Seiteneffekt voneuroE = dollar * 1,17072;
ist, dass
euroE
hinterher den Wert vondollar
hat, obwohl der Gesamtausdruck den Wert17072
hat (der aber verworfen wird). Operatorpräzedenz
-
Neurot schrieb:
was soll denn dieser Titel?!
Für viele C oder C++ Anfänger ist 'void' ein Synonym für "Funktion", da sie meinen, weil dieses da steht, wäre das der Name dafür (so wie "function" oder "func" o.ä. bei anderen (Skript)Programmiersprachen).
Wahrscheinlich wird demnächst dazu dann 'auto' gesagt (wenn sich diese Schreibweise durchsetzt - auch wenn ich persönlich davon nicht so viel halte):
auto X() -> int;
-
Inko schrieb:
Danke...ich habe nur die ' Zeichen vergessen.
Vergessen... genau... vergessen
Bin schon gespannt auf deinen nächsten Thread.