Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Spiri

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.11.2008, 16:29 Uhr
Spiri



Als erst mal vorstellen:
Hallo, ich bin Luca aus Luxemburg bin 12 Jahre alt und entwickle mit C++.

Nun zu meinem Problem:
Ich programmiere gerade einen Rechner, mit dem man addieren, subtrahieren, multiplizieren und dividieren kann. Man kann so lange rechnen, bis man "0" eingibt. Nun ist das Problem folgendermaßen beim addieren:
Immer wenn ich es starten will, kehre ich sofort wieder zum Hauptmenü zurück. Das nervt!!
Dass *pZahl schon unter 0 steht kann es nicht liegen, denn beim subtrahieren, multiplizeren und dividieren kann man normal rechnen.

Hier der Code vom addieren:


C++:
        if (Auswahl == 1)
        {
            cout << "Zum Beenden: \"0 + ENTER\"" << endl;

            for (int t = 4; t>0; t--)
            {
                Zeit (1000);
            }

            system ("cls");

            while (*pZahl != 0)
            {
                cout << "Zahl eingeben: ";
                cin >> *pZahl;
                *pResultat += *pZahl;
                cout << "Resultat: " << *pResultat;
                cout << endl;

                if (!cin.good ())
                {
                    cin.clear ();
                    cin.ignore ();
                }

            } // while-Schleife

            system ("cls");
        }




Und hier der ganze Code:


C++:
#include <iostream>
#include <stdio.h>
#include <time.h>
#include "Timer.hpp"

using namespace std;

int main ()
{
    // Variablen
    //
    double Auswahl = 0;
    double Zahl = 0;
    double Resultat = 0;

    // Pointer
    //
    double *pZahl = NULL;
    double *pResultat = NULL;

    pZahl = &Zahl;
    pResultat = &Resultat;

    while (Auswahl != 5)
    {
        cout << "S.T.-RECHNER" << endl;
        cout << "~~~~~~~~~~~~" << endl;
        cout << "1) Addieren" << endl;
        cout << "2) Subtrahieren" << endl;
        cout << "3) Multiplizieren" << endl;
        cout << "4) Dividieren" << endl;
        cout << "5) Beenden" << endl;
        cout << "~~~~" << endl;
        cout << "Eure Wahl: " ;
        cin >> Auswahl;
        system ("cls");

        // Rechenvariablen wieder auf "0" setzen
        *pZahl = 0;
        *pResultat = 0;

        // Addieren
        if (Auswahl == 1)
        {
            cout << "Zum Beenden: \"0 + ENTER\"" << endl;

            for (int t = 4; t>0; t--)
            {
                Zeit (1000);
            }

            system ("cls");

            while (*pZahl != 0)
            {
                cout << "Zahl eingeben: ";
                cin >> *pZahl;
                *pResultat += *pZahl;
                cout << "Resultat: " << *pResultat;
                cout << endl;

                if (!cin.good ())
                {
                    cin.clear ();
                    cin.ignore ();
                }

            } // while-Schleife

            system ("cls");
        }

        else if (Auswahl == 2)
        {
            cout << "Zum Beenden: \"0 + ENTER\"" << endl;

            for (int t = 4; t>0; t--)
            {
                Zeit (1000);
            }

            system ("cls");

            cout << "Zahl eingeben: ";
            cin >> *pZahl;
            *pResultat += Zahl;

            if (!cin.good ())
            {
                cin.clear ();
                cin.ignore ();
            }

            while (*pZahl != 0)
            {

                cout << "Minus        : ";
                cin >> *pZahl;
                *pResultat -= Zahl;
                cout << "Resultat: " << *pResultat;
                cout << endl;

                if (!cin.good ())
                {
                    cin.clear ();
                    cin.ignore ();
                }

            } // while-Schleife

            system ("cls");
        }

        else if (Auswahl == 3)
        {
            cout << "Zum Beenden: \"0 + ENTER\"" << endl;

            for (int t = 4; t>0; t--)
            {
                Zeit (1000);
            }

            system ("cls");

            cout << "Zahl eingeben: ";
            cin >> *pZahl;
            *pResultat += Zahl;

            if (!cin.good ())
            {
                cin.clear ();
                cin.ignore ();
            }

            while (*pZahl != 0)
            {

                cout << "Mal          : ";
                cin >> *pZahl;
                *pResultat *= Zahl;
                cout << "Resultat: " << *pResultat;
                cout << endl;

                if (!cin.good ())
                {
                    cin.clear ();
                    cin.ignore ();
                }

            } // while-Schleife

            system ("cls");
        }

        else if (Auswahl == 4)
        {
            cout << "Zum Beenden: \"0 + ENTER\"" << endl;

            for (int t = 4; t>0; t--)
            {
                Zeit (1000);
            }

            system ("cls");

            cout << "Zahl eingeben: ";
            cin >> *pZahl;
            *pResultat += Zahl;

            if (!cin.good ())
            {
                cin.clear ();
                cin.ignore ();
            }

            while (*pZahl != 0)
            {
                cout << "Dividiert    : ";
                cin >> *pZahl;
                *pResultat /= Zahl;
                cout << "Resultat: " << *pResultat;
                cout << endl;

                if (!cin.good ())
                {
                    cin.clear ();
                    cin.ignore ();
                }

            } // while-Schleife

            system ("cls");
        }

        else if (Auswahl == 5)
        {
        }

        else
        {
            if (!cin.good ())
            {
                cin.clear ();
                cin.ignore ();
            }

            cout << "ERROR: Falsche Eingabe!" << endl;

            for (int t=3; t>0; t--)
            {
                Zeit (1000);
            }

            system ("cls");

        } // else

    } // while-Schleife

    return 0;
}


Dieser Post wurde am 20.11.2008 um 16:31 Uhr von Spiri editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.11.2008, 17:10 Uhr
Tommix



Hallo,

Zitat von Spiri:

Dass *pZahl schon unter 0 steht kann es nicht liegen, ...

doch, kann es.
Bei den anderer Rechenarten steht das cin >> *pZahl vor dem while, nur beim addieren nicht.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.11.2008, 19:33 Uhr
Spiri




Zitat von Tommix:
Hallo,
[quote Spiri]
Dass *pZahl schon unter 0 steht kann es nicht liegen, ...

doch, kann es.
Bei den anderer Rechenarten steht das cin >> *pZahl vor dem while, nur beim addieren nicht.

Gruß, Tommix[/quote]
Ja, du hast Recht! Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.11.2008, 20:49 Uhr
öni



Schöner wäre es wenn du die einzelnen if Abfragen für die Auswahl mit switch abfragen würdest.


C++:
//...

switch(Auswahl)
{ //switch
case 1:
//addiere...
break;

case 2:
//subtrahiere
break;


case 3:
//multipliziere
break;

case 4;
//dividiere
break;

default:
//falsche eingabe
break;

}//switch

//....


Dieser Post wurde am 20.11.2008 um 20:50 Uhr von öni editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.11.2008, 17:39 Uhr
Spiri




Zitat von öni:
Schöner wäre es wenn du die einzelnen if Abfragen für die Auswahl mit switch abfragen würdest.


C++:
//...

switch(Auswahl)
{ //switch
case 1:
//addiere...
break;

case 2:
//subtrahiere
break;


case 3:
//multipliziere
break;

case 4;
//dividiere
break;

default:
//falsche eingabe
break;

}//switch

Ja, ich weiß, ich finde es nureinfacher mit if else if und else ;)

//....


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: