C++ noob hat ein problem mit seinem programm



  • ~~
    [code]
    #include <iostream>
    #include <conio.h>
    #include <cstdlib>
    #include <clearscreen.h>

    using namespace std;

    void addition()
    {
    int zahl1, zahl2;

    cout << "Sie haben sich fuer die Addition entschieden" << endl;
    cout << "Bitte geben sie 2 zu addierende Zahlen ein" << endl;
    cout << "Erste Zahl: ";
    cin >> zahl1;
    cout << "Zweite Zahl: ";
    cin >> zahl2;
    cout << "Ergebniss: " << ( zahl1 + zahl2 ) << endl;
    getch();
    clear_screen();
    }

    void subtraktion()
    {
    int zahl1, zahl2;

    cout << "Sie haben sich fuer die Subtraktion entschieden" << endl;
    cout << "Bitte geben sie 2 zu subtrahierende Zahlen ein" << endl;
    cout << "Erste Zahl: ";
    cin >> zahl1;
    cout << "Zweite Zahl: ";
    cin >> zahl2;
    cout << "Ergebniss: " << ( zahl1 - zahl2 ) << endl;
    getch();
    clear_screen();
    }

    void multiplikation()
    {
    int zahl1, zahl2;

    cout << "Sie haben sich fuer die Multiplikation entschieden" << endl;
    cout << "Bitte geben sie 2 zu multiplizierende Zahlen ein" << endl;
    cout << "Erste Zahl: ";
    cin >> zahl1;
    cout << "Zweite Zahl: ";
    cin >> zahl2;
    cout << "Ergebniss: " << ( zahl1 * zahl2 ) << endl;
    getch();
    clear_screen();
    }

    void division()
    {
    double zahl1, zahl2;

    cout << "Sie haben sich fuer die Division entschieden" << endl;
    cout << "Bitte geben sie 2 zu dividierende Zahlen ein" << endl;
    cout << "Erste Zahl: ";
    cin >> zahl1;
    cout << "Zweite Zahl: ";
    cin >> zahl2;
    cout << "Ergebniss: " << ( zahl1 / zahl2 ) << endl;
    getch();
    clear_screen();
    }

    void quadrat()
    {
    int zahl1;

    cout << "Sie haben sich fuer die Flaechenberechnung eines Quatrates entschieden" << endl;
    cout << "Bitte geben sie die Kantenlaenge des Quatrates ein" << endl;
    cout << "Kantenlaenge: ";
    cin >> zahl1;
    cout << "Ergebniss: " << ( zahl1 * zahl1 ) << endl;
    getch();
    clear_screen();
    }

    void rechteck()
    {
    int zahl1, zahl2;

    cout << "Sie haben sich fuer die Flaechenberechnung eines Rechteckes entschieden" << endl;
    cout << "Bitte geben sie die Laenge und die Breite ein" << endl;
    cout << "Laenge: ";
    cin >> zahl1;
    cout << "Breite: ";
    cin >> zahl2;
    cout << "Ergebniss: " << ( zahl1 * zahl2 ) << endl;
    getch();
    clear_screen();
    }

    void dreieck()
    {
    double zahl1, zahl2;

    cout << "Sie haben sich fuer die Flaechenberechnung eines Dreieckes entschieden" << endl;
    cout << "Bitte geben sie die Laenge und Hoehe ein" << endl;
    cout << "Laenge: ";
    cin >> zahl1;
    cout << "Hoehe: ";
    cin >> zahl2;
    cout << "Ergebniss: " << ( zahl1 * zahl2 / 2 ) << endl;
    getch();
    clear_screen();
    }

    void trapez()
    {
    double zahl1, zahl2, zahl3;

    cout << "Sie haben sich fuer die Flaechenberechnung eines Trapezes entschieden" << endl;
    cout << "Bitte geben sie die Laengen und die Hoehe ein" << endl;
    cout << "Laenge 1: ";
    cin >> zahl1;
    cout << "Laenge 2: ";
    cin >> zahl2;
    cout << "Hoehe: ";
    cin >> zahl3;
    cout << "Ergebniss: " << ( (zahl1 + zahl2) / 2 * zahl3 ) << endl;
    getch();
    clear_screen();
    }

    void wuerfel()
    {
    int zahl1;

    cout << "Sie haben sich fuer die Volumensberechnung eines Wuerfels entschieden" << endl;
    cout << "Bitte geben sie die Kantenlaenge des Wuerfels ein" << endl;
    cout << "Kantenlaenge: ";
    cin >> zahl1;
    cout << "Ergebniss: " << ( zahl1 * zahl1 * zahl1 ) << endl;
    getch();
    clear_screen();
    }

    void quader()
    {
    double zahl1, zahl2, zahl3;

    cout << "Sie haben sich fuer die Volumensberechnung eines Quaders entschieden" << endl;
    cout << "Bitte geben sie die Laenge, die Hoehe und die Breite ein" << endl;
    cout << "Laenge: ";
    cin >> zahl1;
    cout << "Hoehe: ";
    cin >> zahl2;
    cout << "Breite: ";
    cin >> zahl3;
    cout << "Ergebniss: " << ( zahl1 * zahl2 * zahl3 ) << endl;
    getch();
    clear_screen();
    }

    int main()
    {
    while(1 == 1)
    {
    int ents1, ents2, ents3;

    cout << "Taschenrechner" << endl << endl;
    cout << "1. Addition" << endl;
    cout << "2. Subtraktion" << endl;
    cout << "3. Multiplikation" << endl;
    cout << "4. Division" << endl << endl;

    cout << "5. Flaechenberechnung" << endl;

    cout << "6. Koerpervolumen" << endl << endl;

    cout << "10. Beenden" << endl;

    cin >> ents1;

    if (ents1 == 1) addition();
    if (ents1 == 2) subtraktion();
    if (ents1 == 3) multiplikation();
    if (ents1 == 4) division();

    if (ents1 == 5)
    {
    cout << "Flaechenberechnung" << endl;
    cout << "1. Qadrat" << endl;
    cout << "2. Rechteck" << endl;
    cout << "3. Dreieck" << endl;
    cout << "4. Trapez" << endl;

    cin >> ents2;

    }

    if (ents2 == 1) quadrat();
    if (ents2 == 2) rechteck();
    if (ents2 == 3) dreieck();
    if (ents2 == 4) trapez();

    if (ents1 == 6)
    {
    cout << "Koerpervolumen" << endl;
    cout << "1. Wuerfel" << endl;
    cout << "2. Quader" << endl;

    cin >> ents3;

    }

    if (ents3 == 1) wuerfel();
    if (ents3 == 2) quader();

    if (ents1 == 10)
    {
    exit(0);
    }

    }

    getch();
    }
    [/code]
    ~~

    das ist ein Taschenrechner

    wenn ich eine funktion benutze und danach versuche per auswahl zu beenden startet es die funktion einfach nochmal und beendet nicht wenn ich aber gleich beende funktioniert es wie kann ich das beheben bzw. soll ich statt "exit(0);" was anderes verwenden



  • Erstmal solltest du darauf achten, die einzelnen Bedingungen richtig zu verschachteln (wenn keine Flächenberechnungen gefordert werden, erübrigt sich der Vergleich mit ents2).
    Zweitens: Zum Programm beenden reicht an der Stelle ein "return 0;" oder sogar "break;" völlig aus.
    Drittens: Die einzelnen Rechenfunktionen enthalten ziemlich viel duplizierten Code (ich tippe mal auf C&P-Entwicklung :D)

    PS: sfds



  • 1. Nimm Satzzeichen für deine Sprache.
    2. While(1 == 1) ?? Nimm for(;; ).
    3. Wenn schon bei Division mit Fließkommazahlen arbeiten, dann auch überall sonst.
    4. Switch/Case statt if * 10.
    5. Formatieren geht auch besser.

    😉


Anmelden zum Antworten