You are not logged in.

  • Login

1

Sunday, December 12th 2010, 9:48pm

Schiffe-Versenken | for-Schleifen Syntaxfehler?

C/C++ Quellcode

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
for(SSky<0; SSky++)
		{
			for(SSkx<0; SSkx++)
			{
				if(SpKartel[SSky][SSkx].Beschossen == true)
				{
					cout << "X";
				}
				else if(SpKartel[SSky][SSkx].Schiff2er == true)
				{
					cout << "2";
				}
				else if(SpKartel[SSky][SSkx].Schiff3er == true)
				{
					cout << "3";
				}
				else if(SpKartel[SSky][SSkx].Schiff4er == true)
				{
					cout << "4";
				}
				else if(SpKartel[SSky][SSkx].Schiff6er == true)
				{
					cout << "6";
				}
				else if(SpKartel[SSky][SSkx].Schiff12er == true)
				{
					cout << "Z";
				}
				else
				{
					cout << "-";
				}
			}
			cout << endl;
		}
		cout << endl;

Mehr als den Code kann ich euch nicht geben, nur halt noch, dass bei den for-Schleifen immer die letzte runde Klammer an gekritzelt wird.Wo ist da bitte ein Syntaxfehler? Ich versteh es nicht..... :pinch:

2

Sunday, December 12th 2010, 10:53pm

was sagt den der compiler? (mach am besten mal nen screenshot, direkt nen fehler seh ich grad nicht, bin aber auch recht müde)

3

Sunday, December 12th 2010, 10:59pm

Eine for Schleife sieht in C/C++ so aus:

C/C++ Quellcode

1
2
3
for (initialization_expression;loop_condition;increment_expression){
  // statements
}


In beiden Fällen lässt du die initialization_expression weg. Das kann man machen, mnuss aber syntaktisch so aufgeschrieben werden:

C/C++ Quellcode

1
2
3
for (;loop_condition;increment_expression){
  // statements
}

4

Monday, December 13th 2010, 1:28pm

Oh, das ; am anfang hatte ich auch vergessen. Ich rate dir da GRUNDSÄTZLICH die initialisation mit reinzuschreiben. Sieht besser aus, und ist weniger Fehleranfällig.
Wenn es C++ ist kannst du da sogar eine Variable diret drin definieren, weil in den meisten fällen hat die for-Variable nur was in der Schleife selbst was zu bedeuten:

C/C++ Quellcode

1
2
3
4
for(int i = 0; i < 10; i++)
{
   //...
}

5

Monday, December 13th 2010, 1:57pm

Mit der Abbruchbedingung stimmt aber auch was nicht. Die Schleifen laufen solange die Laufindizes negativ sind. Diese werden dann aber für den Array-Zugriff verwendet, das geht mit Sicherheit schief... Und das wahrscheinlich sogar ohne Fehlermeldung oder so, aber mit komplett falschen Werten.

6

Monday, December 13th 2010, 4:56pm

@über mir: Nur so nebenbei, da wird die Karte angezeigt. Da hab ich keine Abbruchbedingung eingebaut. War nur zu Faul noch einmal else if zu benutzen.

HAT SICH ERLEDIGT! MUSSTE NUR IN DER SCHLEIFE NEU DEKLARIEREN!

Für das andere "Problem" mache ich ein neues Thema auf.

This post has been edited 2 times, last edit by "Checkmateing" (Dec 13th 2010, 7:00pm)


Similar threads

Social bookmarks