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

04.12.2011, 17:01

Komisches Zeichen in der Ausgabe

Hallo,

ich habe ein kleines Programm geschrieben, das mir ein Schachbrett mit Seitennummerierung auf dem Bildschirm ausgibt:

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
#include <iostream>

using namespace std;

int main ()
{
    const int Breite=8;
    const int Hoehe=8;

    char Spielfeld[Breite][Hoehe];

    for (int x=0; x<Breite; x++)
    {
        for (int y=0; y<Hoehe; y++)
        {
            Spielfeld[x][y] = '.';
        }
    }

        for (int y=Hoehe; y>=1; y--)
        {
            cout << y << ""; 
        
            for (int x=0; x<Breite; x++)
            {
                cout << "  " << Spielfeld[x][y];
            }
            cout << endl << endl;
        }

        cout << "   A  B  C  D  E  F  G  H" << endl;
        
    return 0;
}


So weit so gut, funktioniert auch alles.
Allerdings habe ich in der Ausgabe auf H8 (oben rechts in der Ecke) immer dieses: komische Symbol...

Ich kann am Quelltext nicht erkennen, wie das zu Stande kommt. Hab die Variablen und Schleifen alle überprüft, finde den Fehler aber nicht. ?(

Kann mir vielleicht jemand von euch helfen?

Danke im Voraus.

2

04.12.2011, 17:14

Zeile 20.

Dein Array hat kein Feld das auf den Index 8 hört.

3

04.12.2011, 17:20

Zeile 20.



Dein Array hat kein Feld das auf den Index 8 hört.


Aber ich habe doch oben mit einer Konstanten "const int Hoehe=8;" zugewiesen, ist da was falsch dran?
Wenn ich in Zeile 20 das "Hoehe" durch "8" ersetze, habe ich das gleiche Problem...

4

04.12.2011, 17:22

Habe ich doch geschrieben. Dein Array hat kein Feld mit dem Index 8.

Man beginnt bei 0 mit dem Zählen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Môr« (04.12.2011, 17:30)


5

04.12.2011, 17:28

*Autsch* - Brett vorm Kopf... Na klar, hast ja Recht. Hab ich übersehen. :pinch:

Habe jetzt den Index unten in der Ausgabe korrigiert:

Quellcode

1
cout << "  " << Spielfeld[x][y-1];


Vielen Dank

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

04.12.2011, 19:40

Änder lieber die Schleife. Einfach y = Hoehe-1; und dann y >= 0.
So ist es ersichtlicher. Dann hast du in x und y direkt die Indizes und musst nicht erst noch rum rechnen. Dadurch lässt sich der Code besser verstehen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

7

04.12.2011, 19:56

Ich habe auch drüber nachgedacht ihm das zu sagen, allerdings hat er dies ja mit Absicht so geschrieben um in Zeile 22 die korrekte Ausgabe zu erhalten.

"Richtiger" wäre es natürlich bei HOEHE-1 anzufangen, allein aus Verständniss gründen, aber bei diesem Miniprogramm tut es keinem weh mal konfus zu schreiben. Er wird das spätestens beim Erweitern merken und da ist Learning by Failure eindeutig effektiver.

Werbeanzeige