Zwischen verschiedenen Switch-Anweisungen auswählen?
-
Guten Tag C++ Community,
ich habe wieder eine kleine Frage.
Und zwar muss ich ein kleines Programm erstellen, das Temperaturen umrechnet. Also von Celsius in Kelvin, Fahreinheit, Reaumur und andersrum.
Dies soll mit switch-Anweisungen geschehen.
Meine Frage ist nun wie ich zwischen verschieden Switches wechseln kann, also abfragen kann ob der User von Celsius("switch(cu)"),...,...oder Fahrenheit("switch(fu)") aus umrechnen möchte.Schonmal Danke an alle Antworten und hilfen.
MaTriX
Mein Code lautet momentan:
// Aufgabe 6 Temperatur.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include "stdafx.h" #include <stdio.h> #include <iostream> using namespace std; int main() { int t;//temperatur int e;//Einheit int cu;//celsius-switch int fu;//Fahrenheit-switch int ku;//Kelvin-switch int ru;//Remeur-switch int default; //Geben sie an///////////////// cout << "Geben Sie bitte die Temperatur an:" << endl; cin >>t; /////////////////////////////// cout << " Es gilt:" << endl; cout << " 1 = C(elsius)" << endl; cout << " 2 = K(elvin)" << endl; cout << " 3 = F(ahrenheit)" << endl; cout << " 4 = R(eaumur)" << endl; /////////////////////////////// //Von welcher Einheit////////// cout << "Geben Sie an von welcher Einheit aus Sie umrechnen möchten" << endl; cin >>e; //In welchen switch gehen /////////////////////////////// cout << "In welche Einheit möchten Sie umrechnen?" << endl; cin >>u;// Welches case in dem gewählten Switch? //Umrechnung für celsius if (e=1) { switch(cu) { case 2://in Kelvin cout << t << "°C in (K)elvin umgerechnet ist" << t+273.15 << "°K" << endl; system("pause"); break; case 3://in Fahrenheit cout << t << "°C in (F)ahrenheit umgerechnet ist" << t*33.8 << "°F" << endl; system("pause"); break; case 4://in Reaumur cout << t << "°C in R(eaumur) umgerechnet ist" << t*0.8 << "°R" << endl; system("pause"); break; system("pause"); break; } //Umrechnung für Fahreheit if (e=2) { switch(fu){ case 1://in Celsius cout << t << "°F in C(elsius) umgerechnet ist" << ((t-32)*5)/9 << "°C" << endl; system("pause"); break; case 2://in Kelvin cout << t << "°F in K(elvin) umgerechnet ist" << (t+459.67)/1.8 << "°K" << endl; system("pause"); break; case 3://in Remeur cout << t << "°F in Reaumur umgerechnet ist" << (t-32)/2.25 << "°R" << endl; system("pause"); break; } } return 0; } }
-
Versuche so was in der Art:
//Einheitennamen const char *en[] = { "Celsius", "Kelvin", "Fahrenheit", "Reaumur" }; int main(void) { int t; //Temperatur int e; //Einheit int u; //Umrechnungs Einheit int tc; //Celsius int tu; //Umrechnungs Temperatur printf("Geben Sie bitte die Temperatur an:\n"); scanf_s("%d", &t); //Eingabe der Temperatur printf( "\tEs gilt:\n" \ "\t1 = C(elsius)\n" \ "\t2 = K(elvin)\n" \ "\t3 = F(ahrenheit)\n" \ "\t4 = R(eaumur)\n" ); printf("Geben Sie an, von welcher Einheit aus Sie umrechnen moechten\n"); for(;;) { scanf_s("%d", &e); //Eingabe der Einheit if(e < 1 || e > 4) { //Pruefe, ob Eingabe zwischen 1 und 4 liegt printf("Nur Werte von 1 bis 4 sind erlaubt. Versuche es erneut.\n"); } else { break; } } printf("In welche Einheit moechten Sie umrechnen?\n"); for(;;) { scanf_s("%d", &u); //Eingabe der Umrechnungs Einheit if(u < 1 || u > 4) { //Pruefe, ob Eingabe zwischen 1 und 4 liegt printf("Nur Werte von 1 bis 4 sind erlaubt. Versuche es erneut.\n"); } else if(u == e) { //Pruefe, ob Einheiten identisch sind printf("Die Einheiten duerfen nicht identisch sein. Versuche es erneut.\n"); } else { break; } } //Temperatur nach Celsius umrechnen switch(e) { case 1: tc = t; //Celsius vorhanden, keine Umrechnung noetig break; case 2: tc = /* ... */; //Kelvin zu Celsius break; case 3: tc = /* ... */; //Fahrenheit zu Celsius break; case 4: tc = /* ... */; //Reaumur zu Celsius break; } //Celsius nach Umrechnungs Einheit umrechnen switch(u) { case 1: tu = tc; //Wurde bereits umgerechnet break; case 2: tu = /* ... */; //Celsius zu Kelvin break; case 3: tu = /* ... */; //Celsius zu Fahrenheit break; case 4: tu = /* ... */; //Celsius zu Reaumur break; } //Ausgabe printf("%d Grad %c(%s) sind umgerechnet %d Grad %c(%s).\n", t, en[e-1][0], &en[e-1][1], tu, en[u-1][0], &en[u-1][1]); }