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

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

11

06.09.2011, 17:14

Da fehlte eine Klammer und irgendwie war da alles völlig unsortiert. Hab es mal so gemacht, wie es am meisten Sinn ergab. Ordentliche Einrückung gibt es, wie du siehst, mit den C++ Tags.

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
#include <iostream>
using namespace std;

int main() {
    bool spiel = true;
    char taste1;
    bool frage[4] = { false, false, false, false };
    int antwort;
    char eingabe;

    cout << "Spiel starten: s" << endl;
    cout << "Anleitung: a" << endl;
    cout << "Beenden: b" << endl;

    while(true) {
        cin >> taste1 ;

        if (spiel) {
            while (true) {
                if (!frage[0]) {
                    cout <<  "Das ist weiß und so änlich wie ein Kissen ?";
                    antwort = 2;
                    cin >> eingabe;
                }

                if (antwort == eingabe) {
                    cout << "\n Richtig!";
                } else {
                    cout << "falsch";
                }
            }

            if (taste1 == 's')  {
                cout << "Spiel gestartet" ;
                spiel = true ;
                cin >> taste1 ;
            }


            if (taste1 == 'a')  {
                cout << "Anleitung !" << endl;
            }


            if (taste1 == 'b')  {
                break;
            } else {
                cout << "falsche eingabe" << endl ;
            }
        }
    }
}
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

valentin

Treue Seele

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

12

06.09.2011, 17:19

http://ideone.com/2ye6m
So funktionierts

Mich wunderts, dass du das überhaupt compilieren konntest.
Da fehlte eine Klammer, und ne Funktion die nicht vom Typ void ist, verlangt nen Rückgabewert.

//Och Architekt, musste das sein?^^
//edit2: Was für ne IDE benutzt du denn?
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »valentin« (06.09.2011, 17:25)


13

06.09.2011, 17:24

Mich wunderts, dass du das überhaupt compilieren konntest.


Könnte auch daran liegen, dass er vorher compiliert hat, dann einen Fehler eingebaut hat, und jetzt immer das vorher compilierte Programm (welches noch keine Frage beinhaltet) öffnet.

Zitat

Basically, there are only 10 types of people in the world. Those who know binary, and those who don't.

14

07.09.2011, 10:59

http://ideone.com/2ye6m
So funktionierts

Mich wunderts, dass du das überhaupt compilieren konntest.
Da fehlte eine Klammer, und ne Funktion die nicht vom Typ void ist, verlangt nen Rückgabewert.

//Och Architekt, musste das sein?^^
//edit2: Was für ne IDE benutzt du denn?
Microsoft Visual C++ 2008 Express Edition


Warum wir das hier nicht abgespielt ?:

Zitat

if (antwort == eingabe) {
cout << "\n Richtig!";
}

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Laxander« (07.09.2011, 11:09)


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

15

07.09.2011, 11:30

Weil char != int. Heißt du musst es zu int casten und 48 abziehen. Warum? Da überlasse ich dir auch mal etwas Arbeit ;). Und ein break wäre noch ganz nice.
Etwa so:

C-/C++-Quelltext

1
2
3
4
if (antwort == (static_cast<int>(eingabe) - 48)) {
    cout << "\n Richtig!";
    break;
}


Andernfalls würde auch atoi gehen, dazu einfach stdlib.h einbinden:

C-/C++-Quelltext

1
2
3
4
if (antwort == atoi(&eingabe)) {
    cout << "\n Richtig!";
    break;
}
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

16

07.09.2011, 20:41

Andernfalls würde auch atoi gehen, dazu einfach stdlib.h einbinden:

C-/C++-Quelltext

1
2
3
4
if (antwort == atoi(&eingabe)) {
    cout << "\n Richtig!";
    break;
}

ach, atoi erwartet keinen terminierten String? (Das ist tatsächlich eine Frage, weil ich das erwarten würde und nichts anderes^^)

Einfach "eingabe" zu einem int machen und das Problem ist gelöst.

edit: Du solltest eine Eingabevariable nicht für zwei verschiedene Eingaben nutzen. Das ist sehr gefährlich und verursacht hier wieder einen anderen Fehler. Einfach eine neue Variable für die zweite Eingabe als int definieren. Die erste muss char ja sein.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

17

09.09.2011, 15:01

Steht nicht "if (!frage[0])" für "false" ?

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

18

09.09.2011, 16:22

Nein. Das Ausrufezeichen ist der NOT-Operator. NOT false ist true und NOT true ist false.

Werbeanzeige