Ich wollte grad eine Art "Rechner" in C++ Programmieren, nur leider funktioniert er nicht und ich weiß nicht warum.
Also bitte ich euch darum mir evtl. sagen zu können was ich falsch gemacht habe.
Code:
#include <iostream>
using namespace std;
int main()
{
int ergebnis;
int Seife;
int Baum;
int Orangensaftkonzentrat;
int Karotte;
int Schere;
int meine_Variablen = 0;
int a;
double b;
double c;
cout <<"Wähle ob du addieren(1), subtrahieren(2), multiplizieren(3) oder teilen(4) willst\n";
cin >> a;
switch(a)
{
case 1:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b+c);
if (ergebnis == 4) meine_Variablen = Seife;
else if (ergebnis == 6) meine_Variablen = Baum;
else if (ergebnis == 7) meine_Variablen = Orangensaftkonzentrat;
else if (ergebnis == 3) meine_Variablen = Karotte;
else if (ergebnis == 1) meine_Variablen = Schere;
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
case 2:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b-c);
if (ergebnis == 4) meine_Variablen = Seife;
else if (ergebnis == 6) meine_Variablen = Baum;
else if (ergebnis == 7) meine_Variablen = Orangensaftkonzentrat;
else if (ergebnis == 3) meine_Variablen = Karotte;
else if (ergebnis == 1) meine_Variablen = Schere;
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
case 3:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b*c);
if (ergebnis == 4) meine_Variablen = Seife;
else if (ergebnis == 6) meine_Variablen = Baum;
else if (ergebnis == 7) meine_Variablen = Orangensaftkonzentrat;
else if (ergebnis == 3) meine_Variablen = Karotte;
else if (ergebnis == 1) meine_Variablen = Schere;
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
case 4:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b/c);
if (ergebnis == 4) meine_Variablen = Seife;
else if (ergebnis == 6) meine_Variablen = Baum;
else if (ergebnis == 7) meine_Variablen = Orangensaftkonzentrat;
else if (ergebnis == 3) meine_Variablen = Karotte;
else if (ergebnis == 1) meine_Variablen = Schere;
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
default:
cout<<"Ihre Eingabe war ungueltig!\n\n";
break;
}
return 0;
}
Ist es nicht sogar so das er meine_variablen auf irgendwas setzt ? Ich meine doch das nicht initialisierte variablen irgendeinen random wert haben können.
Ist es nicht sogar so das er meine_variablen auf irgendwas setzt ? Ich meine doch das nicht initialisierte variablen irgendeinen random wert haben können.
Ich versteh jetzt nicht ganz was du meinst. Kannst das nochmal genauer erklären ?
@moepmeep Der Rechner soll, wenn er als ergebnis z.B. 4 hat, seife ausgeben.
Ist es nicht sogar so das er meine_variablen auf irgendwas setzt ? Ich meine doch das nicht initialisierte variablen irgendeinen random wert haben können.
jein. Kommt immer auf den compiler an Bei Visual Studio ist es aber standartmäßig 0 und das nutzen wohl die meisten.
Du hast da etwas vollkommen falsch verstanden. Deklarier meine_Variablen als String und dann:
jein. Kommt immer auf den compiler an Bei Visual Studio ist es aber standartmäßig 0
Falsch.
Edit:
So sollte der Quelltext funktionieren (ungetestet)
Code:
#include <iostream>
using namespace std;
int main()
{
int ergebnis;
int Seife;
int Baum;
int Orangensaftkonzentrat;
int Karotte;
int Schere;
std::string meine_Variablen;
int a;
double b;
double c;
cout <<"Wähle ob du addieren(1), subtrahieren(2), multiplizieren(3) oder teilen(4) willst\n";
cin >> a;
switch(a)
{
case 1:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b+c);
if (ergebnis == 4) meine_Variablen = "Seife";
else if (ergebnis == 6) meine_Variablen = "Baum";
else if (ergebnis == 7) meine_Variablen = "Orangensaftkonzentrat";
else if (ergebnis == 3) meine_Variablen = "Karotte";
else if (ergebnis == 1) meine_Variablen = "Schere";
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
case 2:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b-c);
if (ergebnis == 4) meine_Variablen = "Seife";
else if (ergebnis == 6) meine_Variablen = "Baum";
else if (ergebnis == 7) meine_Variablen = "Orangensaftkonzentrat";
else if (ergebnis == 3) meine_Variablen = "Karotte";
else if (ergebnis == 1) meine_Variablen = "Schere";
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
case 3:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b*c);
if (ergebnis == 4) meine_Variablen = "Seife";
else if (ergebnis == 6) meine_Variablen = "Baum";
else if (ergebnis == 7) meine_Variablen = "Orangensaftkonzentrat";
else if (ergebnis == 3) meine_Variablen = "Karotte";
else if (ergebnis == 1) meine_Variablen = "Schere";
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
case 4:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b/c);
if (ergebnis == 4) meine_Variablen = "Seife";
else if (ergebnis == 6) meine_Variablen = "Baum";
else if (ergebnis == 7) meine_Variablen = "Orangensaftkonzentrat";
else if (ergebnis == 3) meine_Variablen = "Karotte";
else if (ergebnis == 1) meine_Variablen = "Schere";
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
default:
cout<<"Ihre Eingabe war ungueltig!\n\n";
break;
}
return 0;
}
Du musst "meine_Variablen" als string deklarieren (std::string).
Einen String fügst du eine Zeichenkette hinzu mit diesem Zeichen -> " <-
So sollte der Quelltext funktionieren (ungetestet)
Code:
#include <iostream>
using namespace std;
int main()
{
int ergebnis;[COLOR="Red"]
int Seife;
int Baum;
int Orangensaftkonzentrat;
int Karotte;
int Schere;[/COLOR]
std::string meine_Variablen;
int a;
double b;
double c;
cout <<"Wähle ob du addieren(1), subtrahieren(2), multiplizieren(3) oder teilen(4) willst\n";
cin >> a;
switch(a)
{
case 1:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b+c);
if (ergebnis == 4) meine_Variablen = "Seife";
else if (ergebnis == 6) meine_Variablen = "Baum";
else if (ergebnis == 7) meine_Variablen = "Orangensaftkonzentrat";
else if (ergebnis == 3) meine_Variablen = "Karotte";
else if (ergebnis == 1) meine_Variablen = "Schere";
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
case 2:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b-c);
if (ergebnis == 4) meine_Variablen = "Seife";
else if (ergebnis == 6) meine_Variablen = "Baum";
else if (ergebnis == 7) meine_Variablen = "Orangensaftkonzentrat";
else if (ergebnis == 3) meine_Variablen = "Karotte";
else if (ergebnis == 1) meine_Variablen = "Schere";
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
case 3:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b*c);
if (ergebnis == 4) meine_Variablen = "Seife";
else if (ergebnis == 6) meine_Variablen = "Baum";
else if (ergebnis == 7) meine_Variablen = "Orangensaftkonzentrat";
else if (ergebnis == 3) meine_Variablen = "Karotte";
else if (ergebnis == 1) meine_Variablen = "Schere";
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
case 4:
cout<<"Geben sie nun die erste Zahl ein.\n";
cin >> b;
cout<<"\nUnd nun die Zweite.\n";
cin >> c;
ergebnis = (b/c);
if (ergebnis == 4) meine_Variablen = "Seife";
else if (ergebnis == 6) meine_Variablen = "Baum";
else if (ergebnis == 7) meine_Variablen = "Orangensaftkonzentrat";
else if (ergebnis == 3) meine_Variablen = "Karotte";
else if (ergebnis == 1) meine_Variablen = "Schere";
cout<<"Ergebnis:" << meine_Variablen << endl;
break;
default:
cout<<"Ihre Eingabe war ungueltig!\n\n";
break;
}
return 0;
}
Du musst "meine_Variablen" als string deklarieren (std::string).
Einen String fügst du eine Zeichenkette hinzu mit diesem Zeichen -> " <-
Beispiel:
std::string meinString = "Hallo";
So sah das auch bei mir aus als ich das gemacht hab. Aber den string hab ich anders gemacht. Ich hab halt #include <string> und dann string meine_Variablen;
hat so auch super geklappt.
Edit: Was ich mich noch Frage ist: Warum schreibst du std::string wenn man das std schon als namespace da hat ?
Edit²: Den rot makierten Bereich hab ich auch noch weggelassen, weil es ja nichts bringt wenn ich was deklariere was man nicht braucht ^^
außerdme hast du in deinem code ziehmlich viele else if anwesiungen die nur zutreffen wenn das ergebnis wirklich eine der zahlen ist.
ich würde dir empfehlen noch eine normale else anweisung zu machen die zutrifft falls keine zahl getroffen wurde.
außerdem würde ich vor dein return 0; noch ein system("pause"); setzen ist allerdings in deinem code nicht notwenig :P
Danke. Allerdings das mit dem system("pause") brauche ich in meinem aktuellen code nicht, weil ich noch ne schleife eingebaut habe. Aber trotzdem Danke