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]);
    }
    

Anmelden zum Antworten