Währungsumrechner ohne x-viele If's/Cases
-
Habe vor einen Währungsrechner zu schreiben.
Wie bekommen ich es hin, dass ich aus 10 Währungen die sich jeweils x beliebig mal kombinieren lassen um sie auszurechnen so wenig Anweisungen wie möglich verwenden kann?
Gibt es nicht eine Art Selektion über Arrays... die das Programm wesentlich verkürzen.
Wäre interessiert an Programmiertechniken in dem Fall um Code zu sparen.
-
Du kannst ein Array (wenn du willst auch eine map<>) anlegen, in dem die Umrechnungskurse der jeweiligen Währungen nach Euro eingetragen sind. Dann mußt du nur noch Ursprungs- und Zielwährung auswählen (beim Array als int's, bei einer map kannst du auch die Namen als String eintragen) und kannst mit
geld_ziel = geld_quelle*umrechnung[quelle]/umrechnung[ziel];umrechnen.
-
Jup, habs mal eben ausprobiert. Geht ganz ohne if bzw. switch/case.
Hier mal mein dolles Programm als Anregung. Man könnte das aber, wie CStoll schon gesagt hat besser mit ner map<std::string, double> machen.
#include <iostream> const long double WAEHRUNG_ZU_US_DOLLAR[] = { 1.0L, 1.38218L, 0.008282L, 0.83019L, 2.06210L, 0.03938L }; int main() { std::cout << "[0] US - Dollar\n" << "[1] Euro\n" << "[2] Japanischer Yen\n" << "[3] Schweizer Franken\n" << "[4] Britische Pfund\n" << "[5] Russicher Rubel\n" << std::endl; std::cout << "Betrag: "; long double betrag = 0.0; std::cin >> betrag; std::cout << "Start - Währung: "; int startWaehrung; std::cin >> startWaehrung; std::cout << "Ziel - Währung: "; int zielWaehrung; std::cin >> zielWaehrung; long double zielBetrag = betrag * WAEHRUNG_ZU_US_DOLLAR[startWaehrung] / WAEHRUNG_ZU_US_DOLLAR[zielWaehrung]; std::cout << "Ziel - Betrag: " << zielBetrag << std::endl; return 0; }Gruß
Don06
-
Könnten nicht besser auch enums benutzt werden? Eigentlich das Gebiet der Enums.
-
enum <=> ganzzahltyp
-
Ich möchte nur darauf hinweisen, das wenn es mehr als nur eine Währungsumrechnung für "Homezwecke" ist, ggf. noch bestimmte Regeln zur Umrechnung beachtet werden müssen (z.B. wurde bei der Euroeinführung für die Umrechnung jeweils 2 Zahlenpaare verwendet - man durfte nicht einfach die Rückrechnung mit dem Kehrwert des ersten machen).