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

R4xx4r

Frischling

  • »R4xx4r« ist der Autor dieses Themas

Beiträge: 2

Wohnort: Wien

  • Private Nachricht senden

1

09.07.2009, 23:18

Hilfe bei Aufgabe Kapitel 5

Hallo Leute !

Kurz zu mir da es mein erster Post hier ist :)
Bin 21 Jahre aus Wien und programmiere erst seit kurzen c++ (bin bei kapitel 5 meines c++ wissens ;)). so habe ich ein ganz klein wenig erfahrung in c# und pascal und etwas mehr in html und css (was aber hier eig egal ist da es ja nix mit programmieren zu tun hat :))

Und ich kenn natürlich die SuFu habe aber diesen Fehler eig nicht gefunden darum satrte ich nen nein Thread, falls ich was übersehen habe SRY!

So Nun aber zu meinem "Problem":

Ich habe die Aufgabe eigentlich ganz gut hinbekommen (für nen Anfänger) und es läuft eig auch Fehlerfrei, zumindest fast :)

Bei mir wird das Feld nicht wie es sein sollte angezeigt. Es sollte so aussehen:
.....
.....
.....
.....
.....

ist aber bei mir nur eine lange schalnge also .......................

woran liegt das denn?
ich finde nemlich auch keinen wirklichen unterschied zum lösungsvorschlag aus dem buch.
hier der code

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#include <iostream>
#include <cstdlib>

using namespace std;

struct s_spielfeldInfo
{
    bool bBesetzt;
    char chFeldname[30];
};

//Variablen & Konstanten

//

const int breite = 5;
const int hoehe = 5;
s_spielfeldInfo spielfeld [breite] [hoehe];

//Prototypen

//

//Die Erklärungen zu den einzelnen Funktionen stehen bei den Funktionen

//

void spielfeldLoeschen();
void spielfeldAnzeigen();   
void feldBesetzen();        
void felddatenAnzeigen();           

//Hauptfunktion

//

int main()
{
    int auswahl = 0;

    spielfeldLoeschen ();  //Spielfeld initialisieren


    do
    {   
        cout << "         MENUE" << endl;
        cout << "-------------------------" << endl;
        cout << "1 - Spielfeld anzeigen" << endl;
        cout << "2 - Feld besetzen" << endl;
        cout << "3 - Felddaten anzeigen" << endl;
        cout << "4 - Spielfeld loeschen" << endl;
        cout << "5 - Programm beenden" << endl;
        cout << "\n\n";
        cout << "Auswahl: ";
        cin >> auswahl;

        switch (auswahl)
        {
        case 1:
            spielfeldAnzeigen();
            break;

        case 2:
            feldBesetzen();
            break;

        case 3:
            felddatenAnzeigen();
            break;

        case 4:
            spielfeldLoeschen();
            break;

        case 5:
            cout << "\nProgramm beendet" << endl;
            break;

        default:
            cout << endl;
            cout << "Falsche Eingabe!\n\n" << endl;
            system("cls");
            break;
        }
    } while(auswahl != 5);

    return 0;
} // Ende Hauptfunktion



//spielfeldLoeschen

//

//hier kann man das Spielfeld löschen

//

void spielfeldLoeschen()
{
    for (int y = 0; y < hoehe; y++)
    {
        for (int x = 0; x < breite; x++)
        {
            spielfeld[x][y].bBesetzt = false;
        }
    }
    
    system("cls");

}   // Ende der Funktion



//spielfeldAnzeigen

//

//zeigt das Spielfeld an . => unbesetzt | x => besetzt

//

void spielfeldAnzeigen()
{
    cout << endl;

    for (int y = 0; y < hoehe; y++)
    {
        for (int x = 0; x < breite; x++)
        {
            if(spielfeld [x] [y].bBesetzt == true)
                cout << "X";
            else
                cout << ".";
        }
    }
    cout << endl;
}   // Ende der Funktion



//feldBesetzen

//

//hier kann man ein feld am bestimmten punkten mit bestimmten namen besetzen

//

void feldBesetzen()
{
    int x = 0;
    int y = 0;
    
    // Einlesen der Koordinaten wo etwas stehen soll

    do
    {
        cout << "X-Koordinate (1 - " << breite << "): ";
        cin >> x;
    } while(x < 1 || x > breite);
    do
    {
        cout << "Y-Koordinate (1 - " << hoehe << "): ";
        cin >> y;
    } while(y < 1 || y > breite);

    //Eingabe des Namen (Ding) was auf den oben angegebenen Koordinaten steht

    cout << "Name: ";
    cin.ignore();
    cin.get(spielfeld [x-1] [y-1].chFeldname,29);
    spielfeld [x-1] [y-1].bBesetzt = true;
    
}   // Ende der Funktion



//felddatenAnzeigen

//

//hier kann man schauen ob besetzt oder frei

//

void felddatenAnzeigen()
{   
    int x = 0;
    int y = 0;
    // Einlesen der Koordinaten worüber man etwas wissen möchte

    do
    {
        cout << "X-Koordinate (1 - " << breite << "): ";
        cin >> x;
    } while(x < 1 || x > breite);
    do
    {
        cout << "Y-Koordinate (1 - " << hoehe << "): ";
        cin >> y;
    } while(y < 1 || y > breite);

    //Spielfelddaten ausgeben

    if(spielfeld[x-1][y-1].bBesetzt == false)
    {
        cout << "Dieses Feld ist noch nicht besetzt!" << endl;
    }
    else
    {
        cout << "Spielfeld ist besetzt von: " << spielfeld[x-1][y-1].chFeldname << endl;
    }
    
}   // Ende der Funktion


Zu eurer Info: Ich verwende Visual Studio C++ 2008 Express, falls das was zur Sache tut :)

vielen dank schonmal

mfg,
R4xx4r
You cannot kill what you did not create

2

09.07.2009, 23:26

Willkommen im Forum^^

Du musst, wenn du in spielfeldAnzeigen() die y-Reihen durchgehst nach jeder Reihe noch ein endl hinzufügen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
for (int y = 0; y < hoehe; y++)
{
    for (int x = 0; x < breite; x++)
    {
        if(spielfeld [x] [y].bBesetzt == true)
            cout << "X";
        else
            cout << ".";
    }
    cout << endl;
} 

R4xx4r

Frischling

  • »R4xx4r« ist der Autor dieses Themas

Beiträge: 2

Wohnort: Wien

  • Private Nachricht senden

3

09.07.2009, 23:32

Hallo und Danke für die schnelle Antwort :)

Okay das war ja mal simpel da hätt ich echt selbst draufkommen können :lol:
Nur such ich jetzt seit ca einer Stunde den Fehler, da dürfte ich das einfahc immer überlesen haben :)

Auf alle Fälle vielen Danke
funktioniert jetzt :)

mfg,
R4xx4r
You cannot kill what you did not create

Werbeanzeige