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

12.06.2009, 20:46

C++: If-Bedingung

Hallo!

Ich bin zwar recht neu hier, habe aber schon eine Frage:
Bei einem kleinen Programm hatte ich folgenden Error:

Quellcode

1
error C2181: Ungueltiges 'else' ohne zugehoeriges 'if'


Das Merkwürdige dabei ist, dass sich diese Meldung auf folgende Quelltextzeile bezog:

C-/C++-Quelltext

1
2
else if (nWahl == 3)
cout << "Programm wird beendet...\n\n\n";

Bei anderen Quelltextzeilen der gleichen Sorte passierte dies nicht:

C-/C++-Quelltext

1
2
3
else if (nWahl == 2)
cout << "\n\n\n\n\nProgramm\n";
cout << "\fIn Arbeit!";


Könnte es vielleicht an folgendem "Schleifenkopf" liegen?

C-/C++-Quelltext

1
2
3
4
while (nWahl != 3)
{
      ...
}


Sonstige Fehler sind nicht angezeigt worden.
Außerdem besitze ich Windows Vista, welches mir bei jedem Compilerstart eine Fehlermeldung mit Kompabilitätsproblemen anzeigt (glaube aber nicht dass es daran liegt).

Hoffe auf schnelle Antwort ;)

Edit von Fred: Code-Tags hinzugefügt

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

12.06.2009, 21:02

zusammenhängender code ist besser als die fetzen^^. du wirst irgendwo klammern vergessen haben vermute ich. zeigma zusammenhängend den code ;)

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

3

12.06.2009, 21:20

Ich würde dir empfehlen gerade am Anfang immer Klammern zu setzen:

Quellcode

1
2
3
4
5
if(..) {
...
} else if(...) {
...
}


ohne klammern darf da nur eine Anweisung stehen. ich vermute daher wird der fehler kommen.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

4

12.06.2009, 21:20

Verwende das nächste mal bitte Code-Tags. Das ist übersichtlicher und dafür sind die ja da ;)

Zeig und auf jeden Fall mal die komplette If-Anweisung, aber es kann möglicherweise daran liegen:

C-/C++-Quelltext

1
2
3
4
else if (nWahl == 2)
   cout << "\n\n\n\n\nProgramm\n";
// Hier ist das Ende der If-Anweisung! Das zweite cout wird immer ausgeführt. Richtig wäre. beides in { }

cout << "\fIn Arbeit!";

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

5

12.06.2009, 23:53

was hat die "{}" klammer mit der meldung zu tun?
er hat einfach kein "if" davor stehen, wie man in der meldung lesen kann ;).

C-/C++-Quelltext

1
2
3
4
if(nWahl == 1)
[do something]
else if (nWahl == 3)
cout << "Programm wird beendet...\n\n\n";

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

6

13.06.2009, 00:01

Die Klammern haben in sofern was damit zu tun, dass das hier vmtl. die gleiche Fehlermeldung bringen würde.

C-/C++-Quelltext

1
2
3
4
5
if(blubb)
  std::cout << "Blubb";
std::cout<<"Kein If mehr";
else if(bla)
   std::cout<<"bla";

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

7

13.06.2009, 00:18

ok, hast recht. habe ich gerade ausprobiert und es kommt die fehler meldung, sry ;)

8

13.06.2009, 12:20

OK, danke. Bin mir sicher dass es funktioniert hätte, doch den Quelltext find ich nicht mehr... Liegt vielleicht daran, dass der Ordner in Microsoft Visual Studio "My Projects" seltsamerweise nicht existiert Oo
Naja, egal...

PS: Beim nächsten Mal benutze ich die C++-Code's, hab's beim ersten Mal nicht gesehen...

EDIT: Hab das Programm neu geschrieben, jetzt gibts aber Probleme mit "cout"

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
//BMI-Check

//Programm zum Berechnen des BMI's

//


//1: BMI berechnen

//

void funcBerechnen (float fGewicht, float fGroesse, float fBMI);
{
    cout << "\n\n\n\n\nBMI-Check 1.0\n";
    cout << "_____________________________________________________________________________\n\n";
    cout << "\tIn Arbeit!";
}

//Hauptprogramm

//

int main ()
{
    //Variablen

    //

    int nWahl;
    float fBMI;
    float fGewicht;
    float fGroesse;

    //Menue-Schleife

    //

    while (nWahl != 3)
    {
        cout << "\n\n\n\n\nBMI-Check 1.0\n";
        cout << "_____________________________________________________________________________\n\n";
        cout << "\t1: BMI berechnen";
        cout << "\t2: Info";
        cout << "\t3: Programm beenden";
        cout << "\tIhre Wahl: ";
        cin >> nWahl;

        //1: Berechnen?

        //

        if (nWahl == 1)
        {
            funcBerechnen (fGewicht, fGroesse, fBMI);
        }

        //2: Info?

        //

        else if (nWahl == 2)
        {
            cout << "\n\n\n\n\nBMI-Check 1.0\n";
            cout << "_____________________________________________________________________________\n\n";
            cout << "\tIn Arbeit!";
        }
        else if (nWahl == 3)
        {
            cout << "\n\n\tProgramm wird beendet...";
        }
        else 
        {
            cout << "\n\n\tFalsche Eingabe!";
        }
    }
    
    return 0;
}


Und hier die Fehlerliste:
error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'char [20]' ist

Den Error gibt es insgesamt 14mal und bezieht sich auf alle "couts" (wobei 'char [20]' die Zahl in den eckigen Klammern unteerschiedlich ist). Kann mir bitte nochmal jemand helfen?

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

9

13.06.2009, 13:00

Du hast das using namespace std; am Anfang vergessen.

Ich bin aber mal froh, dass endlich mal ein Anfänger das if gleich als if-Bedingung bezeichnet, und nicht if-Schleife:)

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

10

13.06.2009, 13:06

Zitat von »"Helmut"«


Ich bin aber mal froh, dass endlich mal ein Anfänger das if gleich als if-Bedingung bezeichnet, und nicht if-Schleife:)

Mir ist dasselbe durch den Kopf, als ich den Thread gelesen habe. :)

Werbeanzeige