Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.11.2007, 18:58

Rechenprogramm

Hallo alle zusammen.
Ich habe mir vor ein paar Wochen das Buch "C++ für Spieleprogrammierer" von Heiko Kalista gekauft .
Ich muss sagen: Ich bin echt beeindruckt!
Ich bin jetzt beim ende des dritte Kapitels. Um alles gelernte mal zu wiederholen und um eine kleine Erfolgskontrolle zu machen wollte ich ein kleines Rechenprogramm schreiben.
Tja, das Programm ist fertig. Das Problem ist nur, dass es nicht so läuft wie ich will^^. Bin ein totaler Nap in der Sprache und daher ist das glaub ich auch kein Wunder.
Das Programm soll einfache Rechenmöglichkeiten darstellen und ausrechnen.
Das funktioniert alles ohne Probleme.
Nur wollte ich noch Befehle wie "info" oder "help" einbauen.
Und genau da hakt das Programm.

Hier mal mein Quellcode:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
Einfaches Rechenprogramm 
C++ für Spieleprogrammierer
*/

#include <iostream>
using namespace std;

//Hauptprogramm

int main ()
{
    //Variablen

    float plus1 = 0.1f;
    float plus2 = 0.1f;
    float Gesamtpunkteplus = 0.1f;
    float minus1 = 0.2f;
    float minus2 = 0.2f;
    float Gesamtpunkteminus = 0.2f;
    float mal1 = 0.3f;
    float mal2 = 0.3f;
    float Gesamtpunktemal;
    float geteilt1 = 0.4f;
    float geteilt2 = 0.4f;
    float Gesamtpunktegeteilt = 0.4f;
    char befehl;
    char rechnen;
    
    //Ausgabe der Rechenmöglichkeiten

    cout << "Wollen Sie (a)ddieren, (s)ubtrahieren, (m)ultiplizieren oder (d)ividieren: ";
    cin >> rechnen;

    //Addition

    if ((rechnen == 'a') || (rechnen == 'A'))
    {
        cout << "Bitte die erste Zahl fuer das Additionsverfahren angeben: ";
        cin >> plus1;
        cout << "Bitte die zweite Zahl fuer das Additionsverfahren angeben: ";
        cin >> plus2;
        //Berechnung der Gesamtpunktezahl:

        Gesamtpunkteplus = plus1 + plus2;
        cout << "Gesamtergebnis: " << Gesamtpunkteplus << endl;
    }
    //Subtraktion

    if ((rechnen == 's') || (rechnen == 'S'))
    {
        cout << "Bitte die erste Zahl fuer das Subtraktionsverfahren eingeben: ";
        cin >> minus1;
        cout << "Bitte die zweite Zahl fuer das Subtraktionsverfahren eingeben: ";
        cin >> minus2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunkteminus = minus1 - minus2;
        cout << "Gesamtergebnis: " << Gesamtpunkteminus << endl;
    }
    //Multiplikation

    if ((rechnen == 'm') || (rechnen == 'M'))
    {
        cout << "Bitte die erste Zahl fuer das Multiplikationsverfahren eingeben: ";
        cin >> mal1;
        cout << "Bitte die zweite Zahl fuer das Multiplikationsverfahren eingeben: ";
        cin >> mal2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunktemal = mal1 * mal2;
        cout << "Gesamtergebnis: " << Gesamtpunktemal << endl;
    }
    //Division

    if ((rechnen == 'd') || (rechnen == 'D'))
    {
        cout << "Bitte die erste Zahl fuer das Divisionsverfahren eingeben: ";
        cin >> geteilt1;
        cout << "Bitte die zweite Zahl fuer das Divisionsverfahren eingeben: ";
        cin >> geteilt2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunktegeteilt = geteilt1 / geteilt2;
        cout << "Gesamtergebnis: " << Gesamtpunktegeteilt << endl;
    }
    

    else 
    {
        cout << "\nFalsche Eingabe!\nGeben Sie 'info' fuer Informationen ein\nGeben Sie 'help' fuer die Verfuegbare Befehle ein\nGeben Sie 'exit' zum schließen des Programms ein\nGeben sie 'run' fuer ein neuer Rechenvorgang ein!\n";
        cin >> befehl;
    }

    cout << "\nGeben Sie 'info' fuer Informationen ein\nGeben Sie 'help' fuer die Verfuegbare Befehle ein\nGeben Sie 'exit' zum schliesen des Programms ein\nGeben sie 'run' fuer ein neuer Rechenvorgang ein!\n";
    cin >> befehl;

    //Ausgabe der Rechenmöglichkeiten

    if (befehl == 'run')
    {
        cout << "Wollen Sie (a)ddieren, (s)ubtrahieren, (m)ultiplizieren oder (d)ividieren: ";
        cin >> rechnen;
    }

    //help Befehl

    if (befehl == 'help')
    {
        cout << "\nGeben Sie 'info' fuer Informationen ein\nGeben Sie 'help' fuer die Verfuegbare Befehle ein\nGeben Sie 'exit' zum schliesen des Programms ein\nGeben sie 'run' fuer ein neuer Rechenvorgang ein!\n";
        cin >> befehl;
    }
    //info Befehl

    if (befehl == 'info')
    {
        cout << "\n(c) by Uwe Collmer\nThanks for downloading and using\nVersion 0.5\nMade in about 3 hours\n";
        cin >> befehl;
    }
    //exit Befehl

    if (befehl == 'exit')
    {
        return 0;
    }

}


Ja,... ich weiß, dass es nicht wirklich übersichtlich ist... brauche halt noch mehr Erfahrung.

Kann mir jemand vlt. helfen, dass das Programm richtig läuft?
Wäre echt dankbar!
Vielen Dank
LG

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

2

27.11.2007, 19:20

Am besten erklärst du erstmal, was das Programm macht 'es hakt' is bisschen dürftig.
Ich gebe zu, dass jeder der bisschen im Stoff ist dein Problem auch ohne deine Beschreibung lokalisieren kann, aber wenn du mal selbst den falschen Ablauf schilderst und dann erklärst, wie der Ablauf genau sein soll hast du gute Chancen, mit einem Blick auf deinen Code selbst zu sehen wo die Probleme sind und dann entweder Lösungen zu finden oder nach konkreten Vorschlägen zu einzelheiten zu fragen ;)


// Edit: auf sowas wie unter mir geschrieben hab ich jetzt garnicht geachtet, weil 'läuft nicht so wie ich will' für mich eher bedeutet, dass es läuft aber was falsches macht :lol:

3

27.11.2007, 19:23

Das kann nicht funktionieren weil die Variable "befehl" nur genau ein Zeichen aufnehmen kann.

Entweder Du kürzt die Befehle auf "i", "h", ... oder Du verwendest z.B. std::string oder char-Arrays (wobei da der Vergleich dann anders aussehen muss (strncmp)) für Zeichenketten.

4

27.11.2007, 19:30

Aja ok.
Ich hab erstmal alles ein wenig übersichtlicher und "anders" gestaltet:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
Einfaches Rechenprogramm 
C++ für Spieleprogrammierer
*/

#include <iostream>
using namespace std;

//Hauptprogramm

int main ()
{
    //Variablen

    float plus1 = 0.1f;
    float plus2 = 0.1f;
    float Gesamtpunkteplus = 0.1f;
    float minus1 = 0.2f;
    float minus2 = 0.2f;
    float Gesamtpunkteminus = 0.2f;
    float mal1 = 0.3f;
    float mal2 = 0.3f;
    float Gesamtpunktemal;
    float geteilt1 = 0.4f;
    float geteilt2 = 0.4f;
    float Gesamtpunktegeteilt = 0.4f;
    char befehl;
    char rechnen;
    

    //Anfangsbildschirm

    cout << "Willkommen bei dem Rechenprogramm!\nGeben Sie info fuer Informationen ein\nGeben Sie help fuer die Verfuegbare Befehle ein\nGeben Sie exit zum schliesen des Programms ein\nGeben sie run fuer ein neuer Rechenvorgang ein!\n";
    cin >> befehl;

    //Ausgabe der Rechenmöglichkeiten

    if (befehl == 'run')
    {
        cout << "Wollen Sie (a)ddieren, (s)ubtrahieren, (m)ultiplizieren oder (d)ividieren: ";
        cin >> rechnen;
    }
    //Addition

    if ((rechnen == 'a') || (rechnen == 'A'))
    {
        cout << "Bitte die erste Zahl fuer das Additionsverfahren angeben: ";
        cin >> plus1;
        cout << "Bitte die zweite Zahl fuer das Additionsverfahren angeben: ";
        cin >> plus2;
        //Berechnung der Gesamtpunktezahl:

        Gesamtpunkteplus = plus1 + plus2;
        cout << "Gesamtergebnis: " << Gesamtpunkteplus << endl;
    }
    //Subtraktion

    if ((rechnen == 's') || (rechnen == 'S'))
    {
        cout << "Bitte die erste Zahl fuer das Subtraktionsverfahren eingeben: ";
        cin >> minus1;
        cout << "Bitte die zweite Zahl fuer das Subtraktionsverfahren eingeben: ";
        cin >> minus2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunkteminus = minus1 - minus2;
        cout << "Gesamtergebnis: " << Gesamtpunkteminus << endl;
    }
    //Multiplikation

    if ((rechnen == 'm') || (rechnen == 'M'))
    {
        cout << "Bitte die erste Zahl fuer das Multiplikationsverfahren eingeben: ";
        cin >> mal1;
        cout << "Bitte die zweite Zahl fuer das Multiplikationsverfahren eingeben: ";
        cin >> mal2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunktemal = mal1 * mal2;
        cout << "Gesamtergebnis: " << Gesamtpunktemal << endl;
    }
    //Division

    if ((rechnen == 'd') || (rechnen == 'D'))
    {
        cout << "Bitte die erste Zahl fuer das Divisionsverfahren eingeben: ";
        cin >> geteilt1;
        cout << "Bitte die zweite Zahl fuer das Divisionsverfahren eingeben: ";
        cin >> geteilt2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunktegeteilt = geteilt1 / geteilt2;
        cout << "Gesamtergebnis: " << Gesamtpunktegeteilt << endl;
    }
    
    //Nach dem Programmablauf:

        cout << "\nErgebnis erfolgreich errechnet! Geben Sie info fuer Informationen ein\nGeben Sie help fuer die Verfuegbare Befehle ein\nGeben Sie exit zum schliesen des Programms ein\nGeben sie run fuer ein neuer Rechenvorgang ein!\n";
        cin >> befehl;
    

    //help Befehl

    if (befehl == 'help')
    {
        cin >> befehl;
    }
    //info Befehl

    if (befehl == 'info')
    {
         cout << "\n(c) by Uwe Collmer\nThanks for downloading and using\nVersion 0.5\nMade in about 3 hours\n";
         cin >> befehl;
    }
    //exit Befehl -> ? ? ?

    //Falesche Eingabe

    else 
    {
        cout << "\nFalsche Eingabe!\nGeben Sie info fuer Informationen ein\nGeben Sie help fuer die Verfuegbare Befehle ein\nGeben Sie exit zum schliesen des Programms ein\nGeben sie run fuer ein neuer Rechenvorgang ein!\n";
        cin >> befehl;
    }


    return 0;
}


Also:

Sobald man das Programm startet erscheint eine Auswahl an Befehlen.
Wenn man nun run eingibt sollte eine auswahl erscheinen, ob man plus, minus, mal oder geteilt rechnen will.
Nach diesem vorgang sollte die Auswahl wieder erscheinen.

Wenn ich am Anfang aber run eingeben überspringt er einfach das wesentliche rechenprogramm und klatscht mir den else Befehl am Ende hin.
Danke für deine Antwort aber schlauer bin ich immer noch nicht. :?:

LG

5

27.11.2007, 19:38

Aja. Ok. Vielen Dank. Soweit funktioniert es.
Aber nachdem ich 2 Befehle ausgeführt habe will er nicht mehr! An was könnte das liegen?


(Link)


Und wie krieg ich den exit Befehl rein?
das return 0; war ja falsch... das hab ich selber bemerkt :)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
Einfaches Rechenprogramm 
C++ für Spieleprogrammierer
*/

#include <iostream>
using namespace std;

//Hauptprogramm

int main ()
{
    //Variablen

    float plus1 = 0.1f;
    float plus2 = 0.1f;
    float Gesamtpunkteplus = 0.1f;
    float minus1 = 0.2f;
    float minus2 = 0.2f;
    float Gesamtpunkteminus = 0.2f;
    float mal1 = 0.3f;
    float mal2 = 0.3f;
    float Gesamtpunktemal;
    float geteilt1 = 0.4f;
    float geteilt2 = 0.4f;
    float Gesamtpunktegeteilt = 0.4f;
    char befehl;
    char rechnen;
    

    //Anfangsbildschirm

    cout << "Willkommen bei dem Rechenprogramm!\nGeben Sie 'i' fuer Informationen ein\nGeben Sie 'h' fuer die Verfuegbare Befehle ein\nGeben Sie 'x' zum schliesen des Programms ein\nGeben sie 'r' fuer ein neuer Rechenvorgang ein!\n";
    cin >> befehl;

    //Ausgabe der Rechenmöglichkeiten

    if (befehl == 'r')
    {
        cout << "Wollen Sie (a)ddieren, (s)ubtrahieren, (m)ultiplizieren oder (d)ividieren: ";
        cin >> rechnen;
    }
    //Addition

    if ((rechnen == 'a') || (rechnen == 'A'))
    {
        cout << "Bitte die erste Zahl fuer das Additionsverfahren angeben: ";
        cin >> plus1;
        cout << "Bitte die zweite Zahl fuer das Additionsverfahren angeben: ";
        cin >> plus2;
        //Berechnung der Gesamtpunktezahl:

        Gesamtpunkteplus = plus1 + plus2;
        cout << "Gesamtergebnis: " << Gesamtpunkteplus << endl;
    }
    //Subtraktion

    if ((rechnen == 's') || (rechnen == 'S'))
    {
        cout << "Bitte die erste Zahl fuer das Subtraktionsverfahren eingeben: ";
        cin >> minus1;
        cout << "Bitte die zweite Zahl fuer das Subtraktionsverfahren eingeben: ";
        cin >> minus2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunkteminus = minus1 - minus2;
        cout << "Gesamtergebnis: " << Gesamtpunkteminus << endl;
    }
    //Multiplikation

    if ((rechnen == 'm') || (rechnen == 'M'))
    {
        cout << "Bitte die erste Zahl fuer das Multiplikationsverfahren eingeben: ";
        cin >> mal1;
        cout << "Bitte die zweite Zahl fuer das Multiplikationsverfahren eingeben: ";
        cin >> mal2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunktemal = mal1 * mal2;
        cout << "Gesamtergebnis: " << Gesamtpunktemal << endl;
    }
    //Division

    if ((rechnen == 'd') || (rechnen == 'D'))
    {
        cout << "Bitte die erste Zahl fuer das Divisionsverfahren eingeben: ";
        cin >> geteilt1;
        cout << "Bitte die zweite Zahl fuer das Divisionsverfahren eingeben: ";
        cin >> geteilt2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunktegeteilt = geteilt1 / geteilt2;
        cout << "Gesamtergebnis: " << Gesamtpunktegeteilt << endl;
    }
    
    //Nach dem Programmablauf:

        cout << "\nGeben Sie 'i' fuer Informationen ein\nGeben Sie 'h' fuer die Verfuegbare Befehle ein\nGeben Sie 'x' zum schliesen des Programms ein\nGeben sie 'r' fuer ein neuer Rechenvorgang ein!\n";
        cin >> befehl;
    

    //help Befehl

    if (befehl == 'h')
    {
        cout << "\nGeben Sie 'i' fuer Informationen ein\nGeben Sie 'h' fuer die Verfuegbare Befehle ein\nGeben Sie 'x' zum schliesen des Programms ein\nGeben sie 'r' fuer ein neuer Rechenvorgang ein!\n";
        cin >> befehl;
    }
    //info Befehl

    if (befehl == 'i')
    {
         cout << "\n(c) by Uwe Collmer\nThanks for downloading and using\nVersion 0.5\nMade in about 3 hours\n";
         cin >> befehl;
    }
    //exit Befehl -> ? ? ?

    //Falesche Eingabe

    else 
    {
            cout << "Falsche Eingabe!\nGeben Sie 'i' fuer Informationen ein\nGeben Sie 'h' fuer die Verfuegbare Befehle ein\nGeben Sie 'x' zum schliesen des Programms ein\nGeben sie 'r' fuer ein neuer Rechenvorgang ein!\n";
            cin >> befehl;
    }


    return 0;
}


LG

6

27.11.2007, 19:38

Zum Teil von den arrays biste noch nicht gekommen oder?? bei sovielen Variablen bieten sich gut 2Dimensionale Arrays an!

Aber sonst fürn Anfang echt gut ^^

7

27.11.2007, 19:46

Naja... ich hab das Buch erst seit 2 Wochen^^ und hab mich vorher noch nie mit der Sprache beschäftigt.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

8

27.11.2007, 19:47

// edit
hier is ja schon wieder so viel geändert während ich geschrieben habe :D
// edit ende


So, nach einem bisschen umgestalten (nicht ideal, aber schon etwas besser) jetzt erstmal zu der Sache mit 'run' btw Zeichenketten in C++

Zitat von »"mahe"«

Das kann nicht funktionieren weil die Variable "befehl" nur genau ein Zeichen aufnehmen kann.

Entweder Du kürzt die Befehle auf "i", "h", ... oder Du verwendest z.B. std::string oder char-Arrays (wobei da der Vergleich dann anders aussehen muss (strncmp)) für Zeichenketten.


'char' steht für character - also Zeichen und nicht für eine ganze Kette von Zeichen, wie eben 'run' oder 'help'.

Um mehrere Zeichen hintereinander zu speichern muss man also mehr als ein char haben - wie mahe schon schreibt, ein char-array (char eingabe[größe];) oder einen std::string (eine Klasse, die am ehesten dem entspricht was du jetzt brauchst.

Das nächste Problem ist, dass '(zeichen)' da ist um genau ein Zeichen zu repräsentieren. um eine Zeichenkette darzustellen gibt es "(zeichenkette)".

C-/C++-Quelltext

1
2
3
4
5
6
std::string eingabe;

std::cin >> eingabe;

if (eingabe == "run")
...


würde ungefähr deinen Start wiederspiegeln.

Weiter mit if / else / else if

mach dir klar, dass es else sich immer nur auf das direkt vorige if bezieht - wenn du also mehrere male if hintereinander hast werden die meisten if nicht berücksichtigt beim Sprung zu else -> um dass abschließende else an alle zugehörigen if zu knüpfen braucht es ca so eine Struktur:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (eingabe == "run")
{
  // bla bla

  std::cin >> eingabe;
  if (eingabe == "a")
    // addieren

  else if (eingabe == "s")
    // subtrahieren

  // usw

  else
    // falsche Eingabe

}
else if (eingabe == "help")
  // Hilfe!

else
  // falsche Eingabe

9

27.11.2007, 20:05

aja, danke. Das werde ich bei meinen nächsten änderungen berücksichtigen.
Was ich aber noch nicht ganz verstehe ist das mit dem std string.
muss ich das hinter der char variable einfügen oder einfach irgendwo?

Hier jetzt mal die nächsten änderungen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
Einfaches Rechenprogramm 
C++ für Spieleprogrammierer
*/

#include <iostream>
using namespace std;

//Hauptprogramm

int main ()
{
    //Variablen

    float plus1 = 0.1f;
    float plus2 = 0.1f;
    float Gesamtpunkteplus = 0.1f;
    float minus1 = 0.2f;
    float minus2 = 0.2f;
    float Gesamtpunkteminus = 0.2f;
    float mal1 = 0.3f;
    float mal2 = 0.3f;
    float Gesamtpunktemal;
    float geteilt1 = 0.4f;
    float geteilt2 = 0.4f;
    float Gesamtpunktegeteilt = 0.4f;
    char befehl;
    char rechnen;
    

    //Anfangsbildschirm

    cout << "Willkommen bei dem Rechenprogramm!\nGeben Sie 'i' fuer Informationen ein\nGeben Sie 'h' fuer die Verfuegbare Befehle ein\nGeben Sie 'x' zum schliesen des Programms ein\nGeben sie 'r' fuer ein neuer Rechenvorgang ein\n";
    cin >> befehl;
    
    //help Befehl

    if (befehl == 'h')
    {
        cout << "\nGeben Sie 'i' fuer Informationen ein\nGeben Sie 'h' fuer die Verfuegbare Befehle ein\nGeben Sie 'x' zum schliesen des Programms ein\nGeben sie 'r' fuer ein neuer Rechenvorgang ein\n";
        cin >> befehl;
    }
    //info Befehl

    if (befehl == 'i')
    {
         cout << "\n(c) by Uwe Collmer\nThanks for downloading and using\nVersion 0.5\nMade in about 3 hours\n";
         cin >> befehl;
    }

    //Ausgabe der Rechenmöglichkeiten

    if (befehl == 'r')
    {
        cout << "Wollen Sie (a)ddieren, (s)ubtrahieren, (m)ultiplizieren oder (d)ividieren: ";
        cin >> rechnen;
    
    //Addition

    if ((rechnen == 'a') || (rechnen == 'A'))
    {
        cout << "Bitte die erste Zahl fuer das Additionsverfahren angeben: ";
        cin >> plus1;
        cout << "Bitte die zweite Zahl fuer das Additionsverfahren angeben: ";
        cin >> plus2;
        //Berechnung der Gesamtpunktezahl:

        Gesamtpunkteplus = plus1 + plus2;
        cout << "Gesamtergebnis: " << Gesamtpunkteplus << endl;
    }
    //Subtraktion

    if ((rechnen == 's') || (rechnen == 'S'))
    {
        cout << "Bitte die erste Zahl fuer das Subtraktionsverfahren eingeben: ";
        cin >> minus1;
        cout << "Bitte die zweite Zahl fuer das Subtraktionsverfahren eingeben: ";
        cin >> minus2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunkteminus = minus1 - minus2;
        cout << "Gesamtergebnis: " << Gesamtpunkteminus << endl;
    }
    //Multiplikation

    if ((rechnen == 'm') || (rechnen == 'M'))
    {
        cout << "Bitte die erste Zahl fuer das Multiplikationsverfahren eingeben: ";
        cin >> mal1;
        cout << "Bitte die zweite Zahl fuer das Multiplikationsverfahren eingeben: ";
        cin >> mal2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunktemal = mal1 * mal2;
        cout << "Gesamtergebnis: " << Gesamtpunktemal << endl;
    }
    //Division

    if ((rechnen == 'd') || (rechnen == 'D'))
    {
        cout << "Bitte die erste Zahl fuer das Divisionsverfahren eingeben: ";
        cin >> geteilt1;
        cout << "Bitte die zweite Zahl fuer das Divisionsverfahren eingeben: ";
        cin >> geteilt2;
        //Berechnung Gesamtpunktezahl

        Gesamtpunktegeteilt = geteilt1 / geteilt2;
        cout << "Gesamtergebnis: " << Gesamtpunktegeteilt << endl;
    }
    }
    //Falsche Eingabe

    else 
    {
            cout << "Falsche Eingabe!\nGeben Sie 'i' fuer Informationen ein\nGeben Sie 'h' fuer die Verfuegbare Befehle ein\nGeben Sie 'x' zum schliesen des Programms ein\nGeben sie 'r' fuer ein neuer Rechenvorgang ein\n";
            cin >> befehl;
    }

    //Nach dem Programmablauf:

        cout << "\nGeben Sie 'i' fuer Informationen ein\nGeben Sie 'h' fuer die Verfuegbare Befehle ein\nGeben Sie 'x' zum schliesen des Programms ein\nGeben sie 'r' fuer ein neuer Rechenvorgang ein\n";
        cin >> befehl;
    


    //exit Befehl -> ? ? ?


    return 0;
}


Ich hab die Befehle extra nach oben verschoben...
aber ich verstehe nicht, dass ich die Befehle kein zweites mal Ausführen kann...? ? ?

LG

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

10

27.11.2007, 20:26

return 0 ist dein exit-befehl ;)

wenn das nicht funktioniert liegt das vermutlich daran, dass du VC 6.0 verwendest - das hängt dummerweise automatisch so nen 'press any key' Zeugs dran, wenn du dein Prog im Editor startest.

Wenn du dein Programm anschaust musst du zugeben, dass es absolut linear durchläuft -> wo steht da bitte, dass das Programm irgendetwas wiederholen soll?

Um solche Wiederholungen zu implementieren gibt es schleifen - z.b. die while, btw do-while schleife:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
while (bedingung == true)
{
  // immer wieder den Code hier ausführen bis bedingung nicht mehr true ist

}

//-----------------------------------

do
{
  // Unterschied zu while: es wird mindestens einmal ausgeführt bevor die Bedingung getestet wird.

} while(bedingung == true);


Wenn du also deinen Code da rein stellst und immer schaust, ob der Nutzer einen neuen Durchlauf per run angeordnet hat dann klappt das auch mit dem mehrmals ausführen.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
char eingabe;

std::cout << "was eingeben";
std:: cin >> eingabe;
do
{
  // rechnen, hilfe anzeigen etc.

  std::cout << "nochmal was eingeben";
  std::cin >> eingabe;
} while( eingabe == 'r' || eingabe == 'h' || eingabe == 'i' )

// Edit
oder halt

C-/C++-Quelltext

1
while( eingabe != 'x' )

Werbeanzeige