Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: If-Else Frage

  1. #1
    Anfänger
    Registriert seit
    01.12.2008
    Beiträge
    16

    Standard If-Else Frage

    Hallo,

    ich habe vor kurzem angefangen C++ zu lernen.
    Ich habe einen kleinen Rechner gemacht, natürlich
    auf niedrigstem Niveu xD

    Mein Problem ist, dass wenn ich Rechenart 1,2,3 wähle, nach dem
    Ausgeben des Ergebnisses immer das else auch noch ausgegen wird.

    Else sollte doch nur ausgegeben werden, wenn man eine falsche Eingabe tätigt....

    Bei Rechenart 4 wird das Else nicht ausgegeben.


    Source:

    Code:
    #include <cstdlib>
    #include <iostream>
    #include <math.h>
    #include <cstdio>
    #include <string>
    #define PI 3.14159265
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        
        string rezeichen;
        int zahl1, zahl2;
        
        cout <<"Bitte geben Sie die Nummer der Rechenart ein, mit welcher Sie rechnen wollen:" << endl;
        cout <<"1 Plus" << endl;
        cout <<"2 Minus" << endl;
        cout <<"3 Geteilt" << endl;
        cout <<"4 Mal" << endl;
        cout << endl;
        cout <<"Eingabe: ";
        cin >> rezeichen;
        
        if ( rezeichen == "1" )
        {
             cout << "Bitte geben Sie Zahl 1 ein: ";
             cin >> zahl1;
             cout << "Bitte gehben Sie Zahl 2 ein: ";
             cin >> zahl2;
             cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
        }
         
        if ( rezeichen == "2" )
        {
             cout << "Bitte geben Sie Zahl 1 ein: " << endl;
             cin >> zahl1;
             cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
             cin >> zahl2;
             cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
         }
        
        if ( rezeichen == "3" )
        {
             cout << "Bitte geben Sie Zahl 1 ein: " << endl;
             cin >> zahl1;
             cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
             cin >> zahl2;
             cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
         }
         
        if ( rezeichen == "4" )
        {
             cout << "Bitte geben Sie Zahl 1 ein: " << endl;
             cin >> zahl1;
             cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
             cin >> zahl2;
             cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
         }
    
          else
         {
             cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
         }
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    Und noch eine kleine Fragen, wenn man mit einer Rechnung fertig ist, würd ich gerne wieder zum Anfang der Codes springen, dass der Benutzer wieder von vorne anfangen kann, ist das Möglich?

    Mfg.

  2. #2
    W32.FunLove
    Registriert seit
    01.08.2008
    Beiträge
    134

    Standard

    Das else bezieht sich ja auch nur den letzten if-Block. So wird der else Block immer ausgeführt, wenn die Eingabe ungleich 4 ist, was ja immer der Fall ist, wenn du 1,2 oder 3 (letzte Chance! Und ob ihr richtig steht, seht ihr wenn das Licht angeht!) eingegeben hast.

    Du musst vor jedem if ein else hinzufügen.
    Also "else if" . Nur das erste if bleibt normal, da dies ja sozusagen die "Startbedingung" ist.

    Wesentlich einfacher wäre es übrigens, wenn du ein switch-Konstrukt verwenden würdest...
    http://tutorial.schornboeck.net/switch.htm

  3. #3
    Stanley Jobson Avatar von Bi0sh0k
    Registriert seit
    17.12.2007
    Beiträge
    773

    Standard

    Steig auf C# um. Is einfacher. XD

    _______________________________

    GFX Showroom
    Klick mich!
    _______________________________



  4. #4
    W32.FunLove
    Registriert seit
    01.08.2008
    Beiträge
    134

    Standard

    Zitat Zitat von FreeHacker666
    Steig auf C# um. Is einfacher. XD
    Was soll das denn heißen? Hast du immer so wenig Ehrgeiz, wenn was nicht klappt? Wenn ja dann solltest du von C# auf Batch-Script umsteigen...-.-

  5. #5
    W32.FunLove
    Registriert seit
    08.08.2008
    Beiträge
    125

    Standard

    mach anstat if else eine switch anweisung (www.google.ch)

  6. #6
    Anfänger
    Registriert seit
    01.12.2008
    Beiträge
    16

    Standard

    Ja ich Schlaumeier wollte immer Switch+Strings benutzen, was ja nicht ging, deswegen hatte ich IF genommen^^

    Nun sind mir doch noch die Chars eingefallen

    Hab nurnoch Probleme mit dem Continue, so gehts nicht:


    Code:
    #include <cstdlib>
    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        char rechenart;
        int zahl1, zahl2;
      
        
        cout << "Mit welcher Rechenart wollen Sie rechnen?" << endl;
        cin >> rechenart;
        
        if (rechenart == ('+' || '-' || '/' || '*') )
        {
        switch (rechenart)
        {
               case '+':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 + zahl2 << endl;
                    break;
                    
               case '-':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 - zahl2 << endl;
                    break;
               case '/':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 / zahl2 << endl;
                    break;
               case '*':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 * zahl2 << endl;
                    break;       
               }
               }
               
                else
                {
                cout <<"Bitte geben Sie +,-,/ oder * ein!" << endl
                continue;
                 }
                 
        system("PAUSE");
        return EXIT_SUCCESS;
        }
    Und so auch nicht:

    Code:
    #include <cstdlib>
    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        char rechenart;
        int zahl1, zahl2;
    
      
        
        cout << "Mit welcher Rechenart wollen Sie rechnen?" << endl;
        cin >> rechenart;
    
               
        switch (rechenart)
        {
               case '+':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 + zahl2 << endl;
                    break;
                    
               case '-':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 - zahl2 << endl;
                    break;
               case '/':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 / zahl2 << endl;
                    break;
               case '*':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 * zahl2 << endl;
                    break;  
               default:
                       cout<<"Bitte geben Sie +,-,/ oder * ein!" << endl;
                       continue;     
               }
    
    
        system("PAUSE");
        return EXIT_SUCCESS;
        }


    Danke

  7. #7
    Stanley Jobson
    Registriert seit
    08.08.2007
    Beiträge
    740

    Standard

    Code:
    #include <stdafx.h>
    #include <cstdlib>
    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        char rechenart;
        int zahl1, zahl2;
    	bool nochmal = true;
    do
    { 
       system("cls");
        cout << "Mit welcher Rechenart wollen Sie rechnen?" << endl;
        cin >> rechenart;
    
    
               
        switch (rechenart)
        {
               case '+':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 + zahl2 << endl;
                    break;
                   
               case '-':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 - zahl2 << endl;
                    break;
               case '/':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 / zahl2 << endl;
                    break;
               case '*':
                    cout <<"Bitte geben Sie Zahl 1 ein: ";
                    cin >> zahl1;
                    cout <<"Bitte geben Sie Zahl 2 ein: ";
                    cin >> zahl2;
                    cout <<"Das Ergebnis: " << zahl1 * zahl2 << endl;
                    break; 
               default:
                       cout<<"Bitte geben Sie +,-,/ oder * ein!" << endl; 
               }
    } while (nochmal = true);
    
        system("PAUSE");
        return EXIT_SUCCESS;
        }
    so funktioniert alles wuuunderbar
    have fun

    mfg

  8. #8
    CIH-Virus Avatar von -[RiDER]-
    Registriert seit
    05.01.2007
    Beiträge
    496

    Standard

    Hi
    Zitat Zitat von Darkraiser
    so funktioniert alles wuuunderbar
    Ich erkenne nichts weiter, als eine Endlosschleife, und davon noch eine sehr wundersame Umsetzung. :shock:

    Bei while (nochmal = true) sollte eigentlich jeder moderne Compiler zumindest eine Warnung ausgeben!
    while((nochmal = true)) wäre korrekt für die Zuweisung, while(nochmal == true) für den Vergleich. Dein Zwischending ist ungewöhnlich.

    GreetZ RiDER

  9. #9
    W32.FunLove
    Registriert seit
    01.08.2008
    Beiträge
    134

    Standard

    Außerdem ist ein "continue" nur bei Schleifen sinnvoll. Ein "continue" sorgt dafür, dass eine Schleife nochmal ausgeführt wird. Ein "break" bricht die ganze Schleife ab. Bei einem "switch"-Block bricht es den Block ab...

  10. #10
    Stanley Jobson
    Registriert seit
    08.08.2007
    Beiträge
    740

    Standard

    jojo ich hab ja auch nur seinen Code übernommen und kurz was hinzugefügt damit es funtzt, nicht mehr ... wollte mir da keinen stress schieben ^^... und des mit dem == wundert mich grade auch ziemlich oO ... war Visual Studio 2008 .. und solche fehler passieren öfters dürfen aber nich compiliert werdn -.- naja whatever es hat gefuntzt ^^

    mfg

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •