Du bist nicht angemeldet.

Werbeanzeige

BlackViper

Frischling

  • »BlackViper« ist der Autor dieses Themas

Beiträge: 12

Wohnort: Dortmund

Beruf: InformatikStudent

  • Private Nachricht senden

1

07.04.2005, 22:55

Listing 6.6: Modifizierter Code funzt nicht

Hallo Leute,

Ich habe Listing 5.8 als Basis genommen und versucht, jeweils einen Zeiger der Struktur als Funktionsparameter für die Funktionen zu
übergeben.
Kuckt es Euch durch oder besser noch, kompilierts einmal.
Ich sitze selbst schon seit einigen Abenden daran und bastel ständig an
der Struktur herum. Ich fürchte, dass das Array Ärger bereitet..
Kann das Jemand bestätigen?

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
184
185
186
187
188
189
190
191
192
193
// C++ für Spieleprogrammierer

// Eigenes Listing 6.6

// Spielerverwaltung mit Strukturen und Arrays

#include <iostream>

using namespace std;

//Globale Variablen

    const int nBreite = 5;
    const int nHoehe  = 5;

// Globale Strukturen

struct S_Feld
{
    bool besetzt;
    char Name[10];
};

// Funktionsprototypen

void Feld_loeschen (S_Feld *pFeldMatrix[nBreite][nHoehe]);
void Feld_anzeigen (S_Feld *pFeldMatrix[nBreite][nHoehe]);
void Feld_besetzen (S_Feld *pFeldMatrix[nBreite][nHoehe]);
void Daten_anzeigen (S_Feld *pFeldMatrix[nBreite][nHoehe]);

// Hauptprogramm

int main ()
{
    // Variablen

    int nAuswahl = 0;
    S_Feld FeldMatrix[nBreite][nHoehe];
    
    //initialisieren des Feldes

    Feld_loeschen(&FeldMatrix[nBreite][nHoehe]);

    // Verarbeitung des Menüs

    do
    {
        cout << "1 - Spielfeld anzeigen" << endl;
        cout << "2 - Feld besetzen" << endl;
        cout << "3 - Felddaten anzeigen" << endl;
        cout << "4 - Spielfeld loeschen" << endl;
        cout << "5 - Programm beenden\n\n";
        
        cout << "Auswahl: ";
        cin >> nAuswahl;
        cout << endl << endl;
        
        switch (nAuswahl)
        {
            // Spielfeld anzeigen?

        case (1):
            {
                Feld_anzeigen(&FeldMatrix[nBreite][nHoehe]);
            } break;
            
            // Feld besetzen?

        case (2):
            {
                Feld_besetzen(&FeldMatrix[nBreite][nHoehe]);
            } break;
            
            // Felddaten anzeigen?

        case (3):
            {
                Daten_anzeigen(&FeldMatrix[nBreite][nHoehe]);
            } break;
            
            // Spielfeld loeschen?

        case (4):
            {
                Feld_loeschen(&FeldMatrix[nBreite][nHoehe]);
            } break;
            
            // Programm beenden?

        case (5):
            {
                cout << "Mach's gut und danke fuer den Fisch!" << endl << endl;
                
            } break;
            
            // Falsche Eingabe?

        default:
            {
                cout << "Falsche Eingabe!\n\n";
                
            }
        }
        
    } while (nAuswahl != 5); // Spiel beenden?

    
    return 0;
} // main


// Feld_loeschen

// Aufgabe: Das Spielfeld löschen

inline void Feld_loeschen (S_Feld *pFeldMatrix[nBreite][nHoehe])
{
    for (int i=0; i<nBreite; i++)
        for (int j=0; j<nHoehe; j++)
        {
            pFeldMatrix[i][j]->besetzt = false;
            //FeldMatrix[i][j].Name = '';

        }
        
        cout << "Spielfeld wurde (re-)initialisiert!" << endl << endl;
} //Feld_loeschen()


// Feld_anzeigen

// Aufgabe: Das Feld darstellen

void Feld_anzeigen (S_Feld *pFeldMatrix[nBreite][nHoehe])
{
    int nFeldWahl_x = -1;
    int nFeldWahl_y = -1;
    
    cout << "Spielfeld:" << endl;
    cout << "==========" << endl << endl;

    for (int y=nHoehe-1; y>=0; y--)
        for (int x=0; x<nBreite; x++)
        {
            if (pFeldMatrix[x][y]->besetzt == true)
                cout << "X";
            else cout << ".";
            //cout << " " << x << "," << y << " ";

            if (x == nBreite-1) cout << endl;
        }
    cout << endl << endl;
}  //Feld_anzeigen



// Feld_besetzen

// Aufgabe: Das Feld mit Daten füllen

void Feld_besetzen (S_Feld *pFeldMatrix[nBreite][nHoehe])
{
    int nFeldWahl_x = -1;
    int nFeldWahl_y = -1;
    
    do {
        cout << "x-Position (1-" << nBreite << "): ";
        cin >> nFeldWahl_x;
        if (nFeldWahl_x < 1 || nFeldWahl_x > nBreite)
            cout << "Ungueltiger Feld-Wert" << endl;
    } while (nFeldWahl_x < 1 || nFeldWahl_x > nBreite);

    do {
        cout << "y-Position (1-" << nHoehe << "): ";
        cin >> nFeldWahl_y;
        if (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe)
            cout << "Ungueltiger Feld-Wert" << endl;
    } while (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe);
    
    cout << "Name: ";
    cin.ignore ();
    cin.get (pFeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1]->Name, 9);
    cout << pFeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1]->Name << " sehr wohl, Sir!";
    cout << endl << endl;
    
    pFeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1]->besetzt = true;

} // Feld_besetzen()


// Daten_anzeigen

// Aufgabe: Die Felddaten eines Feldes X,Y anzeigen

inline void Daten_anzeigen (S_Feld *pFeldMatrix[nBreite][nHoehe])
{
    int nFeldWahl_x = -1;
    int nFeldWahl_y = -1;
    
    do {
        cout << "Welches Feld soll angezeigt werden?" << endl;
        cout << "x-Position (1-" << nBreite << "): ";
        cin >> nFeldWahl_x;
        if (nFeldWahl_x < 1 || nFeldWahl_x > nBreite)
            cout << "Ungueltiger Feld-Wert!" << endl << endl;
    } while (nFeldWahl_x < 1 || nFeldWahl_x > nBreite);
    
    do {
        cout << "y-Position (1-" << nHoehe << "): ";
        cin >> nFeldWahl_y;
        cin.ignore ();
        if (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe)
            cout << "Ungueltiger Feld-Wert!" << endl << endl;
    } while (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe);

    cout << endl;
    
    if (pFeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1]->besetzt == false)
        cout << "Das Feld (" << nFeldWahl_x << "," << nFeldWahl_y <<
        ") ist noch frei." << endl;
    else cout << "Das Feld (" << nFeldWahl_x << "," << nFeldWahl_y <<
        ") ist belegt mit " << pFeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1]->Name << endl;
    cout << endl << endl;
} //Daten_anzeigen()

---

Ich bekomme 5 gleiche CompilerFehler, aus denen ich nicht wüßte,
was nun der krankende Faktor im Code ist. Ich liste hier mal nur einen auf:

Q:\SOURCE\KAPITEL 6\Eigenes_Listing_6_6.cpp(41) : error C2664: 'Feld_loeschen' : cannot convert parameter 1 from 'struct S_Feld *' to 'struct S_Feld *[][5]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
...
Eigenes_Listing_6_6.exe - 5 error(s), 0 warning(s)


Wäre super, wenn mir jemand einen Tip geben könnte,
was das Problem verursacht.

Greetinx!

BlackViper

[Edit von Osram: Ich habe [ C P P ] und [ / C P P ] (jeweils ohne Leerzeichen ;)) hinzugefügt, damit der Code lesbar wird.]
Fürchte nicht langsam zu gehen,
fürchte nur, stehen zu bleiben.

Beneroth

Alter Hase

Beiträge: 975

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

2

18.04.2005, 10:15

also ich bin eigentlich auch son ziemlicher anfänger, aber ich schaus mir mal an..

ich hab das zeug mal kompiliert, sind die gleichen 5 fehlermeldungen gekommen, einfach auf deutsch ;)

c:\programme\microsoft visual studio\myprojects\hilfe\hilfeb.cpp(33) : error C2664: 'Feld_loeschen' : Konvertierung des Parameters 1 von 'struct S_Feld *' in 'struct S_Feld *[][5]' nicht moeglich
Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

Ich habs mal ohne Parameterübergabe gemacht, dann gehts:

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
184
185
186
187
188
189
190
191
192
193
194
195
196
// C++ für Spieleprogrammierer 

// Eigenes Listing 6.6 

// Spielerverwaltung mit Strukturen und Arrays 

#include <iostream> 

using namespace std; 

//Globale Variablen 

const int nBreite = 5; 
const int nHoehe = 5; 

// Globale Strukturen 

struct S_Feld 
{ 
bool besetzt; 
char Name[10]; 
}; 

// Funktionsprototypen 

void Feld_loeschen (); 
void Feld_anzeigen (); 
void Feld_besetzen (); 
void Daten_anzeigen (); 

//globale struktur, damit parameterübergabe wegfällt

S_Feld FeldMatrix[nBreite][nHoehe];

// Hauptprogramm 

int main () 
{ 
// Variablen 

int nAuswahl = 0; 
 

//initialisieren des Feldes 

Feld_loeschen(); 

// Verarbeitung des Menüs 

do 
{ 
cout << "1 - Spielfeld anzeigen" << endl; 
cout << "2 - Feld besetzen" << endl; 
cout << "3 - Felddaten anzeigen" << endl; 
cout << "4 - Spielfeld loeschen" << endl; 
cout << "5 - Programm beenden\n\n"; 

cout << "Auswahl: "; 
cin >> nAuswahl; 
cout << endl << endl; 

switch (nAuswahl) 
{ 
// Spielfeld anzeigen? 

case (1): 
{ 
Feld_anzeigen();
} break; 

// Feld besetzen? 

case (2): 
{ 
Feld_besetzen(); 
} break; 

// Felddaten anzeigen? 

case (3): 
{ 
Daten_anzeigen(); 
} break; 

// Spielfeld loeschen? 

case (4): 
{ 
Feld_loeschen(); 
} break; 

// Programm beenden? 

case (5): 
{ 
cout << "Mach's gut und danke fuer den Fisch!" << endl << endl; 

} break; 

// Falsche Eingabe? 

default: 
{ 
cout << "Falsche Eingabe!\n\n"; 

} 
} 

} while (nAuswahl != 5); // Spiel beenden? 


return 0; 
} // main 


// Feld_loeschen 

// Aufgabe: Das Spielfeld löschen 

inline void Feld_loeschen () 
{ 
for (int i=0; i<nBreite; i++) 
for (int j=0; j<nHoehe; j++) 
{ 
FeldMatrix[i][j].besetzt = false; 
//FeldMatrix[i][j].Name = ''; 

} 

cout << "Spielfeld wurde (re-)initialisiert!" << endl << endl; 
} //Feld_loeschen() 


// Feld_anzeigen 

// Aufgabe: Das Feld darstellen 

void Feld_anzeigen () 
{ 
int nFeldWahl_x = -1; 
int nFeldWahl_y = -1; 

cout << "Spielfeld:" << endl; 
cout << "==========" << endl << endl; 

for (int y=nHoehe-1; y>=0; y--) 
for (int x=0; x<nBreite; x++) 
{ 
if (FeldMatrix[x][y].besetzt == true) 
cout << "X"; 
else cout << "."; 
//cout << " " << x << "," << y << " "; 

if (x == nBreite-1) cout << endl; 
} 
cout << endl << endl; 
} //Feld_anzeigen 



// Feld_besetzen 

// Aufgabe: Das Feld mit Daten füllen 

void Feld_besetzen () 
{ 
int nFeldWahl_x = -1; 
int nFeldWahl_y = -1; 

do { 
cout << "x-Position (1-" << nBreite << "): "; 
cin >> nFeldWahl_x; 
if (nFeldWahl_x < 1 || nFeldWahl_x > nBreite) 
cout << "Ungueltiger Feld-Wert" << endl; 
} while (nFeldWahl_x < 1 || nFeldWahl_x > nBreite); 

do { 
cout << "y-Position (1-" << nHoehe << "): "; 
cin >> nFeldWahl_y; 
if (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe) 
cout << "Ungueltiger Feld-Wert" << endl; 
} while (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe); 

cout << "Name: "; 
cin.ignore (); 
cin.get (FeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1].Name, 9); 
cout << FeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1].Name << " sehr wohl, Sir!"; 
cout << endl << endl; 

FeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1].besetzt = true; 

} // Feld_besetzen() 


// Daten_anzeigen 

// Aufgabe: Die Felddaten eines Feldes X,Y anzeigen 

inline void Daten_anzeigen () 
{ 
int nFeldWahl_x = -1; 
int nFeldWahl_y = -1; 

do { 
cout << "Welches Feld soll angezeigt werden?" << endl; 
cout << "x-Position (1-" << nBreite << "): "; 
cin >> nFeldWahl_x; 
if (nFeldWahl_x < 1 || nFeldWahl_x > nBreite) 
cout << "Ungueltiger Feld-Wert!" << endl << endl; 
} while (nFeldWahl_x < 1 || nFeldWahl_x > nBreite); 

do { 
cout << "y-Position (1-" << nHoehe << "): "; 
cin >> nFeldWahl_y; 
cin.ignore (); 
if (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe) 
cout << "Ungueltiger Feld-Wert!" << endl << endl; 
} while (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe); 

cout << endl; 

if (FeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1].besetzt == false) 
cout << "Das Feld (" << nFeldWahl_x << "," << nFeldWahl_y << 
") ist noch frei." << endl; 
else cout << "Das Feld (" << nFeldWahl_x << "," << nFeldWahl_y << 
") ist belegt mit " << FeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1].Name << endl; 
cout << endl << endl; 
} //Daten_anzeigen()


..aber ich schätz mal, die Parameterübergabe ist der springende punkt deiner Übung...also sowohl vom lernwert wie anscheinend auch von fehler her. merkwürdig finde ich vorallem, das der Compiler nur beim Funtkionsaufruf und nicht auch bei den Prototypen reklamiert...

Naja, vielleicht finde ich oder sonst jemand noch etws raus, auf jeden fall liegts irgendwie an den paramteren...

Anonymous

unregistriert

3

31.10.2005, 22:10

Hi
Ich hab mich auch an diesem Beispiel versucht....
leider auch nur mit mittelmäßigem erfolg.
Ich ahbe versucht das Spielfeld per refernz an die Funktion SPielfeld Anzeigen zu übergeben.
Die Referenz wurde wie folgt erzeugt:

C-/C++-Quelltext

1
2
3
4
//DAs ist das Spielfeld

                S_SpielfeldInfo Spielfeld[Breite][Hoehe];
    //Referenz auf Spielfeld

    const S_SpielfeldInfo &rSpielfeld = Spielfeld[Hoehe][Breite];


beides in main.
Dann will ich das ganze im Prototyp in die Parameterliste aufnehmen:

C-/C++-Quelltext

1
void SpielfeldAnzeigen(const S_SpielfeldInfo &rSpielfeld, int const Breite, int const Hoehe);


Dann bekomme ich aber folgenden Fehler
E:\C++\Listing 5_11\Listing 5_11.cpp(7) : error C2143: Syntaxfehler : Fehlendes ',' vor '&'
E:\C++\Listing 5_11\Listing 5_11.cpp(7) : error C2059: Syntaxfehler : '&'

und dann als ich die Referenz verwende:

C-/C++-Quelltext

1
SpielfeldAnzeigen(rSpielfeld,Breite,Hoehe);


Folgender Fehler:
E:\C++\Listing 5_11\Listing 5_11.cpp(69) : error C2660: 'SpielfeldAnzeigen' : Funktion akzeptiert keine 3 Parameter



Daraus folgere ich das der Die Refernz nicht in die Parameterliste aufnimmt. Aber warum ?????
Kann mir wer Helfen?

Mfg
Chaos_2k

4

19.11.2005, 13:58

Hi Leute

Hab noch mal über mein Probelm nachgedacht und werde jetzt versuchen die instanzen der struktur auf dem Heap zu erzeugen, ich glaub dann geht *g*

mfg

5

19.11.2005, 17:15

Also ich mein so müsste es Funktionieren aber ich weiß nicht ob es so das erfüllt wie du es möchtest aber wenn du arrays per referenz oder zeiger übergibst gibts irgendwie probleme

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
184
185
186
187
188
189
190
191
192
193
// C++ für Spieleprogrammierer 

// Eigenes Listing 6.6 

// Spielerverwaltung mit Strukturen und Arrays 

#include <iostream> 

using namespace std; 

//Globale Variablen 

    const int nBreite = 5; 
    const int nHoehe  = 5; 

// Globale Strukturen 

struct S_Feld 
{ 
    bool besetzt; 
    char Name[10]; 
}; 

// Funktionsprototypen 

void Feld_loeschen (S_Feld pFeldMatrix[nBreite][nHoehe]); 
void Feld_anzeigen (S_Feld pFeldMatrix[nBreite][nHoehe]); 
void Feld_besetzen (S_Feld pFeldMatrix[nBreite][nHoehe]); 
void Daten_anzeigen (S_Feld pFeldMatrix[nBreite][nHoehe]); 

// Hauptprogramm 

int main () 
{ 
    // Variablen 

    int nAuswahl = 0; 
    S_Feld FeldMatrix[nBreite][nHoehe]; 
    
    //initialisieren des Feldes 

    Feld_loeschen(FeldMatrix); 

    // Verarbeitung des Menüs 

    do 
    { 
        cout << "1 - Spielfeld anzeigen" << endl; 
        cout << "2 - Feld besetzen" << endl; 
        cout << "3 - Felddaten anzeigen" << endl; 
        cout << "4 - Spielfeld loeschen" << endl; 
        cout << "5 - Programm beenden\n\n"; 
        
        cout << "Auswahl: "; 
        cin >> nAuswahl; 
        cout << endl << endl; 
        
        switch (nAuswahl) 
        { 
            // Spielfeld anzeigen? 

        case (1): 
            { 
                Feld_anzeigen(FeldMatrix); 
            } break; 
            
            // Feld besetzen? 

        case (2): 
            { 
                Feld_besetzen(FeldMatrix); 
            } break; 
            
            // Felddaten anzeigen? 

        case (3): 
            { 
                Daten_anzeigen(FeldMatrix); 
            } break; 
            
            // Spielfeld loeschen? 

        case (4): 
            { 
                Feld_loeschen(FeldMatrix); 
            } break; 
            
            // Programm beenden? 

        case (5): 
            { 
                cout << "Mach's gut und danke fuer den Fisch!" << endl << endl; 
                
            } break; 
            
            // Falsche Eingabe? 

        default: 
            { 
                cout << "Falsche Eingabe!\n\n"; 
                
            } 
        } 
        
    } while (nAuswahl != 5); // Spiel beenden? 

    
    return 0; 
} // main 


// Feld_loeschen 

// Aufgabe: Das Spielfeld löschen 

inline void Feld_loeschen (S_Feld pFeldMatrix[nBreite][nHoehe]) 
{ 
    for (int i=0; i<nBreite; i++) 
        for (int j=0; j<nHoehe; j++) 
        { 
            pFeldMatrix[i][j].besetzt = false; 
            //FeldMatrix[i][j].Name = ''; 

        } 
        
        cout << "Spielfeld wurde (re-)initialisiert!" << endl << endl; 
} //Feld_loeschen() 


// Feld_anzeigen 

// Aufgabe: Das Feld darstellen 

void Feld_anzeigen (S_Feld pFeldMatrix[nBreite][nHoehe]) 
{ 
    int nFeldWahl_x = -1; 
    int nFeldWahl_y = -1; 
    
    cout << "Spielfeld:" << endl; 
    cout << "==========" << endl << endl; 

    for (int y=nHoehe-1; y>=0; y--) 
        for (int x=0; x<nBreite; x++) 
        { 
            if (pFeldMatrix[x][y].besetzt == true) 
                cout << "X"; 
            else cout << "."; 
            //cout << " " << x << "," << y << " "; 

            if (x == nBreite-1) cout << endl; 
        } 
    cout << endl << endl; 
}  //Feld_anzeigen 



// Feld_besetzen 

// Aufgabe: Das Feld mit Daten füllen 

void Feld_besetzen (S_Feld pFeldMatrix[nBreite][nHoehe]) 
{ 
    int nFeldWahl_x = -1; 
    int nFeldWahl_y = -1; 
    
    do { 
        cout << "x-Position (1-" << nBreite << "): "; 
        cin >> nFeldWahl_x; 
        if (nFeldWahl_x < 1 || nFeldWahl_x > nBreite) 
            cout << "Ungueltiger Feld-Wert" << endl; 
    } while (nFeldWahl_x < 1 || nFeldWahl_x > nBreite); 

    do { 
        cout << "y-Position (1-" << nHoehe << "): "; 
        cin >> nFeldWahl_y; 
        if (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe) 
            cout << "Ungueltiger Feld-Wert" << endl; 
    } while (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe); 
    
    cout << "Name: "; 
    cin.ignore (); 
    cin.get (pFeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1].Name, 9); 
    cout << pFeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1].Name << " sehr wohl, Sir!"; 
    cout << endl << endl; 
    
    pFeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1].besetzt = true; 

} // Feld_besetzen() 


// Daten_anzeigen 

// Aufgabe: Die Felddaten eines Feldes X,Y anzeigen 

inline void Daten_anzeigen (S_Feld pFeldMatrix[nBreite][nHoehe]) 
{ 
    int nFeldWahl_x = -1; 
    int nFeldWahl_y = -1; 
    
    do { 
        cout << "Welches Feld soll angezeigt werden?" << endl; 
        cout << "x-Position (1-" << nBreite << "): "; 
        cin >> nFeldWahl_x; 
        if (nFeldWahl_x < 1 || nFeldWahl_x > nBreite) 
            cout << "Ungueltiger Feld-Wert!" << endl << endl; 
    } while (nFeldWahl_x < 1 || nFeldWahl_x > nBreite); 
    
    do { 
        cout << "y-Position (1-" << nHoehe << "): "; 
        cin >> nFeldWahl_y; 
        cin.ignore (); 
        if (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe) 
            cout << "Ungueltiger Feld-Wert!" << endl << endl; 
    } while (nFeldWahl_y < 1 || nFeldWahl_y > nHoehe); 

    cout << endl; 
    
    if (pFeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1].besetzt == false) 
        cout << "Das Feld (" << nFeldWahl_x << "," << nFeldWahl_y << 
        ") ist noch frei." << endl; 
    else cout << "Das Feld (" << nFeldWahl_x << "," << nFeldWahl_y << 
        ") ist belegt mit " << pFeldMatrix[nFeldWahl_x-1][nFeldWahl_y-1].Name << endl; 
    cout << endl << endl; 
} //Daten_anzeigen()

Werbeanzeige