Fehler in C++ < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
hallo zusammen
ich bin dabei ein programm in c++ zu schreiben und hab beim kompilieren einen fehler zurück gekriegt
problem is ich weiß nich was er mir damit sagen will bzw wie ich ihn beheben kann
[...]
for (int q=9; q<9;qq++){ using obsolete binding at 'q'
if (Feld[8][qq]==0){q=qq;}}
for (int aa=0;aa<1; ){
Feld2[8][q]=Feld2[8][q]+1;} name lookup of 'q' changed for new ISO 'for' scoping
[...]
dabei wird der zweite fehler als erstes protokolliert
hoffe dass mir jemand helfen kann :)
|
|
|
|
Hallo Faithless,
Du benutzt die Variable q in der 2ten for-Schleife, obwohl du sie nur in der ersten for-Schleife deklariert hast.
Geht man davon aus, daß die anderen Variablen irgendwo im Programm deklariert werden, wird folgender Code kompiliert:
1: |
| 2: | int q = 9;
| 3: |
| 4: | for(; q < 9; qq++) {
| 5: | if(Feld[8][qq] == 0) {
| 6: | q = qq;
| 7: | }
| 8: | }
| 9: |
| 10: | for (int aa = 0; aa < 1; ) {
| 11: | Feld2[8][q] = Feld2[8][q] + 1;
| 12: | }
| 13: | }
|
Allerdings machen die beiden Schleifen wenig Sinn. Die erste Schleife wird überhaupt nicht ausgeführt, da von Anfang an q == 9 gilt. Die 2te Schleife ist auch sinnlos, weil sie eine Endlosschleife ohne Abbruchbedingung ist, da aa nicht verändert wird.
Viele Grüße
Karl
|
|
|
|
|
> Hallo Faithless,
>
>
> Du benutzt die Variable q in der 2ten for-Schleife, obwohl
> du sie nur in der ersten for-Schleife deklariert hast.
das war ja auch irgendwie mein plan... die erste for schleife soll q einen wert geben, der dann in der zweiten verwendet wird
> Geht man davon aus, daß die anderen Variablen irgendwo im
> Programm deklariert werden, wird folgender Code
> kompiliert:
(tun sie, das waren die einzigen fehler)
>
> 1: |
| 2: | > int q = 9;
| 3: | >
| 4: | > for(; q < 9; qq++) {
| 5: | > if(Feld[8][qq] == 0) {
| 6: | > q = qq;
| 7: | > }
| 8: | > }
| 9: | >
| 10: | > for (int aa = 0; aa < 1; ) {
| 11: | > Feld2[8][q] = Feld2[8][q] + 1;
| 12: | > }
| 13: | >
| 14: | > |
>
>
> Allerdings machen die beiden Schleifen wenig Sinn. Die
> erste Schleife wird überhaupt nicht ausgeführt, da von
> Anfang an q == 9 gilt.
okay seh ich irgendwie ein... müsste also als bedingung q>8 haben
>Die 2te Schleife ist auch sinnlos,
> weil sie eine Endlosschleife ohne Abbruchbedingung ist, da
> aa nicht verändert wird.
wird schon, nur aber ich nicht mit geschrieben weil da kein fehler lag ;)
>
>
>
> Viele Grüße
> Karl
>
>
>
wenn ich das also richtig sehe hast du als einzige änderung die bedingung in der ersten for schleife vorgeschlagen
das habe ich nun geändert, der fehler bleibt allerding der gleiche :(
falls es wichtig sein sollte: Feld2 ist "char Feld2[9][9];"
Faithless
|
|
|
|
|
> wenn ich das also richtig sehe hast du als einzige änderung
> die bedingung in der ersten for schleife vorgeschlagen
> das habe ich nun geändert, der fehler bleibt allerding der
> gleiche :(
Also falls es dir erstmal nur ums Kompilieren geht:
Folgender Code kompiliert bei mir unter Cygwin ohne Probleme
1: | int main(int argc, char* argv[]) {
| 2: | char Feld2[9][9];
| 3: | char Feld[9][9];
| 4: | int q = 9; int qq = 0;
| 5: |
| 6: | for(; q < 9; qq++) {
| 7: | if(Feld[8][qq] == 0) {
| 8: | q = qq;
| 9: | }
| 10: | }
| 11: |
| 12: | for (int aa = 0; aa < 1; ) {
| 13: | Feld2[8][q] = Feld2[8][q] + 1;
| 14: | }
| 15: |
| 16: | return 0;
| 17: | } |
Gebe ich 'g++ -v' in der Konsole ein, erhalte ich: 'gcc version 3.4.4'. Zum Kompilieren speichere ich den Code in einer Textdatei mit der Endung .cpp ab. Dann reicht eine Eingabe wie 'g++ test.cpp'. Hilft dir das weiter?
Viele Grüße
Karl
|
|
|
|