|
You last visited: Today at 19:03
Advertisement
Frage zu C++
Discussion on Frage zu C++ within the C/C++ forum part of the Coders Den category.
11/26/2010, 14:24
|
#1
|
elite*gold: 0
Join Date: Oct 2010
Posts: 62
Received Thanks: 6
|
Frage zu C++
Hay..
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;
}
Fragt mich nicht warum Baum, seife etc.
Freue mich auf jede Antwort, danke.
|
|
|
11/26/2010, 14:45
|
#2
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Warum Baum und Seife etc?
Die Frage ist, was soll denn passieren?  Du setzt meine_Variablen halt immer auf 0.
|
|
|
11/26/2010, 15:00
|
#3
|
elite*gold: 20
Join Date: Jul 2004
Posts: 5,468
Received Thanks: 1,993
|
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.
|
|
|
11/26/2010, 15:37
|
#4
|
elite*gold: 0
Join Date: Oct 2010
Posts: 62
Received Thanks: 6
|
Quote:
Originally Posted by djpromo
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.
|
|
|
11/26/2010, 16:26
|
#5
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Quote:
Originally Posted by djpromo
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:
Code:
if(ergebnis==4) meine_Variablen = "Seife";
|
|
|
11/26/2010, 16:43
|
#6
|
elite*gold: 0
Join Date: Oct 2010
Posts: 62
Received Thanks: 6
|
Quote:
Originally Posted by MoepMeep
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:
Code:
if(ergebnis==4) meine_Variablen = "Seife";
|
Danke .. hat super funktioniert.
|
|
|
11/29/2010, 14:21
|
#7
|
elite*gold: 240
Join Date: Dec 2006
Posts: 1,579
Received Thanks: 1,609
|
Quote:
Originally Posted by MoepMeep
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 -> " <-
Beispiel:
std::string meinString = "Hallo";
|
|
|
11/29/2010, 17:49
|
#8
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Quote:
Originally Posted by Unkn0wn0x
Falsch.
|
Stimmt, ist falsch. Grade selber überprüft, kA wie ich dadrauf gekommen bin o.O
|
|
|
11/29/2010, 19:14
|
#9
|
elite*gold: 0
Join Date: Oct 2010
Posts: 62
Received Thanks: 6
|
Quote:
Originally Posted by Unkn0wn0x
Falsch.
Edit:
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 ^^
|
|
|
11/29/2010, 19:53
|
#10
|
elite*gold: 240
Join Date: Dec 2006
Posts: 1,579
Received Thanks: 1,609
|
std::string , schreibe ich aus Angewohnheit. Außerdem habe ich ehrlich nicht gesagt darauf geachtet, dass du den namespace bereits benutzt ;-)
|
|
|
11/29/2010, 19:56
|
#11
|
elite*gold: 0
Join Date: Oct 2010
Posts: 62
Received Thanks: 6
|
Achsu kay, danke.
|
|
|
11/30/2010, 14:36
|
#12
|
elite*gold: 141
Join Date: Dec 2009
Posts: 554
Received Thanks: 3,920
|
nur noch als tipp da du umlaute verwendest:
PHP Code:
const unsigned char AE = static_cast<unsigned char>(142);
const unsigned char ae = static_cast<unsigned char>(132);
const unsigned char OE = static_cast<unsigned char>(153);
const unsigned char oe = static_cast<unsigned char>(148);
const unsigned char UE = static_cast<unsigned char>(154);
const unsigned char ue = static_cast<unsigned char>(129);
const unsigned char ss = static_cast<unsigned char>(225);
das einfach unter deinem using namespace std; einfügen
die umlaute lassen sich dann wie folt verwenden:
cout << "Meine M" << ue << "tze" << endl; // ue = ü
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
|
|
|
11/30/2010, 15:57
|
#13
|
elite*gold: 0
Join Date: Oct 2010
Posts: 62
Received Thanks: 6
|
Quote:
Originally Posted by Strean
nur noch als tipp da du umlaute verwendest:
PHP Code:
const unsigned char AE = static_cast<unsigned char>(142);
const unsigned char ae = static_cast<unsigned char>(132);
const unsigned char OE = static_cast<unsigned char>(153);
const unsigned char oe = static_cast<unsigned char>(148);
const unsigned char UE = static_cast<unsigned char>(154);
const unsigned char ue = static_cast<unsigned char>(129);
const unsigned char ss = static_cast<unsigned char>(225);
das einfach unter deinem using namespace std; einfügen
die umlaute lassen sich dann wie folt verwenden:
cout << "Meine M" << ue << "tze" << endl; // ue = ü
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
|
|
|
All times are GMT +1. The time now is 19:03.
|
|