Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
09.02.2002, 17:28
Psychodad



Hey Leute!
Ich bekomme diese Fehlermeldung beim kompilieren des Codes. Ich verstehe aber nicht warum bzw was ich anders machen muß diese Warnungen enstehen durch den ersten Ausdruck in der For-Schleife hinter dem Kommaoperator und durch den dritten Ausdruck hinter dem Komma. Komischerweise wird durch die Oder-Bedingung im zweiten Ausdruck „countdown != 0“ die Schleife bis 736 oder so ausgeführt und dann die Konsolenanwenudung abgebrochen.
Es müsste doch aber alles der Syntax entsprechend sein...
Hier der Code:

#include<iostream>
#include<iomanip>
using namespace std;

int erbsen[14] = {5,5,5,5,5,5,0,5,5,5,5,5,5,0};
int x;

void tausch(int);

int main()
{

do
{
cout << "Welche Schale solls denn sein (1-6)";
cin >> x;
}
while( x < 1 || x > 6);

tausch(x);

return 0;
}

void tausch(int x)
{

erbsen[x-1]=0;
cout << "Schale Nr." << x << " enthält " << erbsen[x-1] << endl;
for(int zaehler = x, int countdown = erbsen[x]; zaehler <=13 || countdown != 0; ++zaehler , --countdown)
{
erbsen[zaehler] = ++erbsen[zaehler];
cout << "Schale Nr." << zaehler+1 << " enthält " << erbsen[zaehler] << " Erbsen." << endl;
}
}

Und die Fehlermeldung

:C:\Robert\Microsoft Visual Studio\MyProjects\Bantumi2\Bantumi2.cpp(30) : warning C4518: 'int ' : Unerwartete(r) Speicherklassen- oder Typbezeichner; wird ignoriert
C:\Robert\Microsoft Visual Studio\MyProjects\Bantumi2\Bantumi2.cpp(30) : warning C4228: Nicht dem Standard entsprechende Erweiterung : Qualifizierer nach einem Komma in der Deklaratorliste werden ignoriert
Linker-Vorgang läuft...

Bantumi2.exe - 0 Fehler, 2 Warnung(en)

Kann mir bitte mal jemand helfen?! Das ganze ist wie gesagt eine Konsolenanwendung für Win32. Fragt besser nicht nach dem Sinn des Programms. Das soll ein Spiel werden, welches ich auf meinem Handy hab. Blos halt ohne Grafik. Da hab ich jetzt vorm Abi nicht die Zeit zu.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
09.02.2002, 17:38
mani



weißt du eigentlich wie alt dieses Bohnensortierspiel ist?
ein paar tausend/hundert jahre bestimmt...
Quellcode:
#include<iostream>

int erbsen[14] = {5,5,5,5,5,5,0,5,5,5,5,5,5,0};
int x;
int zaehler;
int countdown;

void tausch(int);

int main()
{

do
{
cout << "Welche Schale solls denn sein (1-6)";
cin >> x;
}
while( x < 1 || x > 6);

tausch(x);

return 0;
}

void tausch(int x)
{

erbsen[x-1]=0;
cout << "Schale Nr." << x << " enthält " << erbsen[x-1] << endl;
for(zaehler = x, countdown = erbsen[x]; zaehler <=13 || countdown != 0; ++zaehler , --countdown)
{
erbsen[zaehler] = ++erbsen[zaehler];
cout << "Schale Nr." << zaehler+1 << " enthält " << erbsen[zaehler] << " Erbsen." << endl;
}
}

btw, ich weiß nich aber kann sein das du zaehler++, countdown-- anstatt ++zaehler , --countdown meinst => ++i übergibt den schon um 1s erhöhten wert weiter, i++, den alten und der neue kommt sozusagen erst nach beendigung des schleifendurchlaufes
so kommen erstmal keine fehler mehr :) ob der sinn erfüllt ist, ist fragwürdig :o

--


Dieser Beitrag wurde am 09.02.2002 um 17:41 von mani bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
09.02.2002, 17:42
Mazze



Vor countdown muss das int weg!
Du machst ja auch
int x, y;
und nicht
int x, int y;

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
003
09.02.2002, 19:12
Psychodad



Das Nokia das Spiel nicht erfunden hat ist mir fast schon klar gewesen. :-)
Das waren bestimmt mal wieder die Chinesen oder so.
Okay danke, das int vor dem countdown war wirklich der Grund.
Andere Frage: wenn ich "... || countdown != 0" schreibe bricht die Schleife nicht ab. Nur wenn ich "... || countdown >= 0 " schreibe wird die Schleife abgebrochen. Aber leider nicht dann, wenn sie soll... Eigentlich müsste nach 5 durchläufen die Schleife abgerochen werden. Aber die Schleife bricht nur bei der ersten Bedingung ab. Der scheint die zweite Bedingung gar nicht zu beachten...

--

zum Seitenanfang zum Seitenende Profil || Suche
004
09.02.2002, 19:40
Tron



@mani:
ob praefix oder postfix ++/-- ist hier egal, das macht nur bei zuweisungen unterschiede, also x = ++y; ist ungleich x = y++;

@Psychodad:
ich hab zwar keinen peil, was das proggi macht, aber willst du da wirklich ein || ?
deine schleife lautet ausgeschriebe: wiederhole solange zaehler kleinergleich 13 ist ODER countdown ungleich 0
willst du eventuell: wiederhole solange zaehler kleinergleich 13 ist UND countdown ungleich 0

diese zeile sieht mir auch sehr merkwuerdig aus:
erbsen[zaehler] = ++erbsen[zaehler];
erhoehe den inhalt von erbsen[zaehler] um 1 und schreibe ihn auf sich selbst, oder ausgeschrieben:
++erbsen[zaehler];
erbsen[zaehler] = erbsen[zaehler]; // aeh??
soll das vielleicht erbsen[zaehler] = erbsen[zaehler + 1]; heissen?

die ganze schleife sieht mir recht undurchsichtig aus...
erklaer mal die regen des spiels...

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
005
09.02.2002, 20:23
mani



hmm tron würd ich nicht sagen, wenn du sowas hast, bestimmt das was die for schleife abbekommt...steht so in meinem schlauen buch >:}

--

zum Seitenanfang zum Seitenende Profil || Suche
006
10.02.2002, 07:20
Tron



mani, NEIN, die bedingung und der ikrement der for schleife sind getrennt
etwas anderes waere es, wenn man in der bedingung ++/-- verwendest:
for (;++x < y;);
ist was anderes als
for (;x++ < y;);

aber:
for (; x < y; ++x)
ist genau das gleiche wie
for (; x < y; x++)

les mal in deinem schlauen buch GENAU nach, das wird das selbe sagen wie ich!

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
007
10.02.2002, 19:53
Psychodad



Nene, das oder ist schon richtig dort. genauer erklären kann ich das ein anderes mal - muß jetzt weg. Für ungleich null hab ich jetzt mal größer null eingesetzt, zum probieren. Jedenfalls bricht die schleife nicht ab, obwohl countdown eigentlich null sein müsste nach fünf durchgängen (siehe for-schleife). Sondern beachtet wird irgendwie nur die erste abbruchbedingung.

--

zum Seitenanfang zum Seitenende Profil || Suche
008
11.02.2002, 10:31
Tron



ich bin mir ziemlich sicher, dass in deiner schleife einiges nicht stimmt, besonders bei dieser zeile:

erbsen[zaehler] = ++erbsen[zaehler];

diese macht genau das gleiche wie:

erbsen[zaehler]++;

und ich bin mir auch ziemlich sicher, dass die bedingung zaehler <=13 && countdown != 0 heissen muesste. dann bricht die schleife auch am richtigen punkt ab. denk noch mal genau ueber die bedingen nach...

desweiter ist es ziemlich schlechter programmierstil, variablen, die lokal verwendet werden, global zu deklarieren. (also zaehler und countdown)

erklaer mal die regeln des spiels!

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett


Dieser Beitrag wurde am 11.02.2002 um 14:44 von Tron bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
11.02.2002, 10:52
Psychodad



Na klar muss da ein && hin anstatt ein ||. War gestern ein bissl in Eile. Unterwegs hab ich mir dann auch nochmal die Schleife durchdacht. Jetzt funktioniert schonmal alles so wie es soll. So weit so gut.
Also Bantumi is ein 2-Spieler-Spiel. Jeder hat 6 Schalen plus eine Sammelschale(je nummer 7 und 14). Am Anfang sind in jeder Schale außer den Sammelschalen eine bestimmte Anzahl von Erbsen. Wer am Ende die Meisten Erbsen in seiner Sammelschale hat, der hat gewonnen.
Und dann will ich natürlich noch einen Einspielermodus einbauen.
Ja das mit den globalen Variablen stimmt schon, doch ich hab eher so drauflos gecodet, ohne ein tolles Konzept. Ich wollt auf Nummer sicher gehen, und mir erstmal keine Gedanken über sowas machen. Naja, da entstehen dann wohl solche Fehler. Danke für die Hilfe.

--

zum Seitenanfang zum Seitenende Profil || Suche