Switch mit & Verknüpfung?



  • zeig mal mehr code..



  • char ist 1 zeichen, da kannst nicht einfach nen string reinschieben



  • Hier der komplette Code.

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
    	//Variablendeklaration
    	int laenge;
    	int breite;
    	int hoehe;
    	int gewicht;
    	int ziffer;
    	int zusatzleistung;
    	float preis;
    	float gesamtpreis;
    	char art;
    	char brief;
    
    	//Eingabe
    	cout<<"Geben Sie Laenge, Breite, Hoehe und Gewicht des Briefes ein:\n";
    	cout<<"Laenge (in mm): ";
    	cin>>laenge;
    	cout<<"Breite (in mm): ";
    	cin>>breite;
    	cout<<"Hoehe (in mm): ";
    	cin>>hoehe;
    	cout<<"Gewicht (in g): ";
    	cin>>gewicht;
    	cout<<"\n\nAus folgenden Zusatzleistungen koennen Sie waehlen:\n";
    	cout<<"1-Einschreiben\n";
    	cout<<"2-Eigenhaendig (Einschreiben)\n";
    	cout<<"3-Rueckschein (Einschreiben)\n";
    	cout<<"4-Einschreiben Einwurf\n";
    	cout<<"0-keine Zusatzleistung\n";
    	cout<<"Geben Sie nun die entsprechende Ziffer ein: ";
    	cin>>ziffer;
    
    	//Berechnung
    	if(laenge>=140 && breite>=90 && laenge<=235 && breite<=125 && hoehe<=5 && gewicht<=20)
    	{
    		preis=0.55;
    		brief="Standartbrief";
    	}
    	else if(laenge>=100 && breite>=70 && laenge<=235 && breite<=125 && hoehe<=10 && gewicht<=50)
    	{
    		preis=1.00;
    		brief="Kompaktbrief";
    	}
    	else if(laenge>=100 && breite>=70 && laenge<=353 && breite<=250 && hoehe<=20 && gewicht<=500)
    	{
    		preis=1.00;
    		brief="Großbrief";
    	}
    	else if(laenge>=100 && breite>=70 && laenge<=353 && breite<=250 && hoehe<=50 && gewicht<=1000)
    	{
    		preis=2.20;
    		brief="Maxibrief";
    	}
    		switch(ziffer)
    	{
    		case 1: zusatzleistung=2.05;
    		art="Einschreiben";
    		break;
    		case 2: zusatzleistung=1.80;
    		art="Eigenhaendig (Einschreiben)";
    		break;
    		case 3: zusatzleistung=1.80;
    		art="Rueckschein (Einschreiben)";
    		break;
    		case 4: zusatzleistung=1.60;
    		art="Einschreiben Einwurf";
    		break;
    		case 0: zusatzleistung=0.00;
    		art="keine Zusatzleistung";
    		break;
    	}
    
    	gesamtpreis=preis+zusatzleistung;
    
    	//Ausgabe
    	cout<<brief<<" - "<<art<<endl;
    	cout<<"Das Porto betraegt: "<<gesamtpreis<<" Euro\n\n";
    	return(0);	
    }
    

    Alles was mit char deklariert wurde geht leider nicht. Oo
    [Also in der Berechnung im if/else Teil und drunter im switch.]

    //edit

    char ist 1 zeichen, da kannst nicht einfach nen string reinschieben

    Okay, werd dass mal ändern. Mal schauen ob's dann funktionert. 🙂



  • #include <cstring>
    
    char myString[50] = "";
    
    strcpy(myString, "Test"); //oder besser strncpy()
    

    ansonsten natürlich die Klasse string



  • [s23] schrieb:

    ...

    Grundsätzlich kannst du in einem case-Fall beliebig viele Zuweisungen machen (oder andere Anweisungen ausführen), ich rate dir aber sowohl von char* als auch char[] als String ab. Mit std::string lebt es sich einfacher (und da klappt auch die Zuweisung).

    cu André



  • Hmm.. Komme damit irgendwie nicht so ganz klar.
    Wie kann man ein Wort in einer Variable speichern? - Finde das irgendwie nur für Zahlen.

    #include <cstring>

    char myString[50] = "";

    strcpy(myString, "Test"); //oder besser strncpy()

    Ist das C oder C++?
    In der Art hab ich noch nie was gesehen :<
    Wo kann ich darüber mehr nachlesen?

    //edit

    Aaaah... danke asc! 🙂 So klappt das ganze nun. 🙂



  • Das ist C.

    Benutz einfach <string>

    string art, brief;
    


  • Dankeschön, funktioniert nun alles! 🙂



  • Du musst zwischen einem Zeichen (char) und einer Zeichenkette(char-Array + Nullterminierung) differenzieren.

    @ZoopaJr: Wenn du die korrekten <c...>-Header nutzt, musst du auch beachten, das damit die Funktionen im Namensraum std liegen!

    #include <cstring>
    
    char string[28] = {0};
    std::strncpy(string, "Eigenhaendig (Einschreiben)", 28);
    

    wäre das korrekte Beispiel.

    #include <string>
    
    std::string string("Eigenhaendig (Einschreiben)");
    

    wäre die beste Variante.



  • ups natürlich, danke für den Hinweis


Anmelden zum Antworten