Ergebnis 1 bis 3 von 3

Thema: [C++] Teilen durch 0 Frage

  1. #1
    Avatar von KillaMarci
    KillaMarci Fortgeschrittener Benutzer
    Registriert seit
    08.07.2009
    Beiträge
    1.106
    Danksagungen
    88

    Standard [C++] Teilen durch 0 Frage


    Hi,
    Ich poste erstmal den gesammten Programmcode und schildere dann unten meine Frage:
    Code:
    #include <cstdlib>
    #include <iostream>
    #include <conio.h>
    #include <windows.h>
    
    
    using namespace std;
    
    int main (int argc, char *argv[])
    {
        int rechart,zahla,zahlb;
        printf("\nMenue zur Berechnung");
        printf("\n1.Addition");
        printf("\n2.Subtraktion");
        printf("\n3.Multiplikation");
        printf("\n4.Division");
        printf("\n\n5.Programm Beenden");
        printf("\n\n\nBitte waehlen Sie eine Rechenart:  ");
        cin >> rechart;
        
            switch(rechart)
        {
        case 1:
            printf("\n\nSie muessen nun 2 Zahlen eingeben");
            printf("\nGeben Sie nun ihre erste Zahl ein: ");
            cin >> zahla;
            printf("\nGeben Sie nun ihre zweite Zahl ein: ");
            cin >> zahlb;
            printf("\nRechnung: %i + %i = %i",zahla,zahlb,zahla+zahlb);
            break;
        case 2:
            printf("\n\nSie muessen nun 2 Zahlen eingeben");
            printf("\nGeben Sie nun ihre erste Zahl ein: ");
            cin >> zahla;
            printf("\nGeben Sie nun ihre zweite Zahl ein: ");
            cin >> zahlb;
            printf("\nRechnung: %i - %i = %i",zahla,zahlb,zahla-zahlb);
            break;
        case 3:
            printf("\n\nSie muessen nun 2 Zahlen eingeben");
            printf("\nGeben Sie nun ihre erste Zahl ein: ");
            cin >> zahla;
            printf("\nGeben Sie nun ihre zweite Zahl ein: ");
            cin >> zahlb;
            printf("\nRechnung: %i * %i = %i",zahla,zahlb,zahla*zahlb);
            break;
        case 4:
            printf("\n\nSie muessen nun 2 Zahlen eingeben");
            printf("\nGeben Sie nun ihre erste Zahl ein: ");
            cin >> zahla;
            printf("\nGeben Sie nun ihre zweite Zahl ein: ");
            cin >> zahlb;
    
            switch(zahlb)
            {
                         case 0:
                              printf("\nSie koennen nicht durch Null teilen!");
                              printf("\nBitte geben sie eine andere zweite Zahl ein(nicht 0): ");
                              cin >> zahlb;
                              printf("\nRechnung: %i : %i = %i",zahla,zahlb,zahla/zahlb);
                              break;
                         default:
                              printf("\nRechnung: %i : %i = %i",zahla,zahlb,zahla/zahlb);
                              break;
                              
            }
            break;
        case 5:
             printf("Druecken Sie eine Taste um das Programm zu beenden");
             break;
        }
        
        
        getch();
        return 0;
    }
    Aaalso:
    Es geht um case 0: (rot markiert), welcher sich in case 4 (grün markiert) befindet.
    Case 0 fordert den Benutzer ja zur erneuten Eingabe einer Zahl ein, falls die davor eingegebene Zahl eine 0 war. Wenn er jetzt aber bei der zweiten Frage wiederum eine 0 eingibt(obwohl er das ja eigentlich nicht soll, kann aber ja vorkommen) stürzt das Programm ab (ist ja auch klar warum)

    Nun meine Frage: Wie kann ich es hinkriegen, dass der Benutzer immer und immer wieder aufgefordert wird eine neue Zahl einzugeben, wenn die vorherige eine 0 war, ohne dass ich das gleiche immer und immer wieder in Case 0 schreiben muss?

    Ich denke mal, dass ganze kann man mit irgendeiner Schleife lösen..kenne mich aber mit Schleifen nicht besonders gut aus, und bräuchte da mal ein wenig Hilfe.

    Hoffe die Frage war soweit verständlich (ist ein wenig kompliziert auszudrücken)

    Gruß,
    KillaMarci

  2. #2
    Avatar von pixelflat
    pixelflat Super-Moderator und Deus ex machina
    Registriert seit
    06.03.2007
    Ort
    Ingolstadt
    Beiträge
    10.834
    Danksagungen
    1.058

    Standard

    Du hast da einiges an Redundanz drin. Ich würds zB etwa so machen:

    Code:
    ...
    int zahla = 0, zahlb = 0, rechart;
    // Eingabe Rechenart (rechart)
    
    cout << "Erste Zahl: ";
    cin >> zahla;
    cout << "Zweite Zahl: ";
    cin >> zahlb;
    
    switch(rechart)
    {
     case 1: cout << "Ergebnis: " << zahla + zahlb << endl; break;
     case 2: cout << "Ergebnis: " << zahla - zahlb << endl; break;
     case 3: cout << "Ergebnis: " << zahla * zahlb << endl; break;
     case 4:
      while(zahlb == 0) { cin << zahlb; }
      cout << "Ergebnis: " << zahla / zahlb << endl; break;
     default: cout << "Falsche Eingabe" << endl;
    }
    In meinem Beispiel steht auch 4x "Ergebnis". Das könnte man auch vorher nur ein mal ausgeben. Dann stellt sich aber die Frage was man bei "default" ausgibt, bzw. ob mans weglassen kann.

    Du solltest bei C++ IOStreams (cin, cout) für Ein- & Ausgabe verwenden. printf() gehört zu C (stdio). Eine Switch-Case Anweisung ist eigentlich auch nur bei mehrfachen Auswahlmöglichkeiten praktisch, wo if-else Verschachtelungen unübersichtlich wären. Wenns nur 2 Möglichkeiten gibt, wäre imho if-else besser.
    Geändert von pixelflat (01.03.2010 um 00:12 Uhr)

  3. #3
    Avatar von Saja
    Saja Findet sich zurecht
    Registriert seit
    19.10.2007
    Ort
    Regensburg
    Beiträge
    486
    Danksagungen
    9

    Standard

    ich würde das mit einer do-while schleife abfangen

    do
    {
    blah;
    }
    while(!zahlb); // zahlb==0

Um auf dieses Thema zu ANTWORTEN bitte sich zuerst » hier kostenlos registrieren!!
Neue Frage stellen?
Kurze Zusammenfassung der Frage:

Ähnliche Themen

  1. Frage zu Audio anlage, Digital oder Kabel?
    Von Adraxa im Forum Multimedia
    Antworten: 8
    Letzter Beitrag: 02.02.2010, 16:53
  2. URL/resource & Fonts(x-height) frage
    Von pink87 im Forum Internet und Netzwerke
    Antworten: 4
    Letzter Beitrag: 17.12.2009, 11:03
  3. Frage zur Programmlöschung der 2. Festplatte
    Von MrPresident75 im Forum Festplatten und optische Laufwerke
    Antworten: 2
    Letzter Beitrag: 11.12.2009, 18:55
  4. Frage zu CD's und Frage zu externen Festplatten.
    Von Shibosha im Forum Hardware Allgemein
    Antworten: 4
    Letzter Beitrag: 14.09.2009, 13:32
  5. Grafikkarte Radeon 9250 PCI
    Von faloallaknap im Forum Grafikkarten
    Antworten: 10
    Letzter Beitrag: 09.01.2008, 11:47

Stichworte