Frage zu C++

11/26/2010 14:24 Black3x#1
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 MoepMeep#2
Warum Baum und Seife etc? :p

Die Frage ist, was soll denn passieren? ;) Du setzt meine_Variablen halt immer auf 0.
11/26/2010 15:00 djpromo#3
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 Black3x#4
Quote:
Originally Posted by djpromo View Post
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 MoepMeep#5
Quote:
Originally Posted by djpromo View Post
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 Black3x#6
Quote:
Originally Posted by MoepMeep View Post
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 Bl@ze!#7
Quote:
Originally Posted by MoepMeep View Post
jein. Kommt immer auf den compiler an ;) Bei Visual Studio ist es aber standartmäßig 0
Falsch.

[Only registered and activated users can see links. Click Here To Register...]

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 MoepMeep#8
Quote:
Originally Posted by Unkn0wn0x View Post
Falsch.
Stimmt, ist falsch. Grade selber überprüft, kA wie ich dadrauf gekommen bin o.O
11/29/2010 19:14 Black3x#9
Quote:
Originally Posted by Unkn0wn0x View Post
Falsch.

[Only registered and activated users can see links. Click Here To Register...]

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 Bl@ze!#10
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 Black3x#11
Achsu kay, danke.
11/30/2010 14:36 Strean#12
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 Black3x#13
Quote:
Originally Posted by Strean View Post
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 ;)