mehrdimensionale Arrays an Funktionen Übergeben

OP #2649798
Lesenswert?
• ▲
▼
Hallo!

Ich benütze das Dev-C++, und bin auf das Spiel Schiffeversenken 
gestossen um mit mehrdimensionealen Arrays zu üben.

Das Übergeben an Funktionen ist mir noch nicht klar!


Arrays Spielfelder 10x10
1
char spieler1 = 'O';
2
char spieler2 = 'X';
3

4
char spfeply1[10][10];
5
char spfeply2[10][10];



Funktionen: spielfeld wird zur aktuallisierung des Spielfelds 
aufgerufen, entweder spfe 1 oder 2.

eingb: erfasst die startpositionen der Schiffe zuerst des Spieler1 dann 
2
1
void spielfeld(char);
2
char eingb(char, char);

1
char eingb(char sp, char spfe[][10])
2
{
3
spfe[row-1][colum-1] = sp;
4
spielfeld(spfe);
5
return 0;
6
}

main
1
int main()
2
{
3

4
 eingb(spieler1,  spfeply1);
5
 eingb(spieler2,  spfeply2);
6
}

Dies sind die relavent Codeausschnitte. In meinem Buch steht, dass für 
die erste Dimension keine Werte angeben werden müssen bei der Übergabe 
an Funktionen. Aber das Programm lässt sich nicht kompilieren!

Vielen Dank und freundliche Grüsse!

M.B.
#2649815
Lesenswert?
• ▲
▼
M. B. schrieb:
> Aber das Programm lässt sich nicht kompilieren!

Ich habe leider meine Glaskugel gerade nicht bei mir. Wenn du trotzdem 
eine Antwort haben willst, ohne bis zum Abend zu warten, musst du schon 
mit den Fehlermeldungen vom Compiler rausrücken.

Den ganzen Code wäre auch nicht schlecht, ich sehe nämlich Variablen die 
nirgens definiert wurden...

mfg
OP #2649838
Lesenswert?
• ▲
▼
Sorry, war keine gute Idee nur dass allernötigste zu posten!

1
#include <stdio.h>
2
#include <stdlib.h>
3

4
#define X          'X'
5
#define O          'O'
6
#define clrscr()   system("cls")
7
#define LEER       ' '
8

9
int ply1s1[5] = {1, 1, 1, 1, 1}, ply1s2[3] = {1, 1, 1,},  ply1s3[2]= {1, 1}, ply2s1[5]= {1, 1, 1,1, 1, 1}, ply2s2[3]= {1, 1, 1,},  ply2s3[2]= {1, 1};
10

11
char spfeply1[10][10] = {{' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
12
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
13
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
14
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
15
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
16
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
17
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
18
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
19
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
20
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}};
21
                        
22
char spfeply2[10][10] = {{' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
23
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
24
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
25
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
26
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
27
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
28
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
29
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
30
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
31
                        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}};
32
                        
33
int eingabe1 = 0, eingabe2 = 0;
34
char spieler1 = O;
35
char spieler2 = X;
36
int felder = 100;
37

38
void spielfeld(char spfe);
39
char eingb(char, char spfe[][10]);
40
char zug(char);
41
int win();
42

43
void spielfeld(char spfe)
44
{
45
     int i;
46
     clrscr();
47
     
48
     printf("     0   1   2   3   4   5   6   7   8   9\n   +---+---+---+---+---+---+---+---+---+---+\n");
49
     for(i = 0; i <= 9; i++)
50
     {
51
           printf("%d  | ", i);
52
           printf("%c",spfe[i][0] );
53
           printf(" | ");
54
           printf("%c",spfe[i][1] );
55
           printf(" | ");
56
           printf("%c",spfe[i][2] );
57
           printf(" | ");
58
           printf("%c",spfe[i][3] );
59
           printf(" | ");
60
           printf("%c",spfe[i][4] );
61
           printf(" | ");
62
           printf("%c",spfe[i][5] );
63
           printf(" | ");
64
           printf("%c",spfe[i][6] );
65
           printf(" | ");      
66
           printf("%c",spfe[i][7] );
67
           printf(" | ");
68
           printf("%c",spfe[i][8] );
69
           printf(" | ");
70
           printf("%c",spfe[i][9] );
71
           printf(" | \n");
72
           printf("   +---+---+---+---+---+---+---+---+---+---+\n");
73
           
74
     }
75
    
76
}
77

78

79

80

81
char eingb(char sp, char spfe[][10])
82
{
83
     unsigned int row, colum;
84
     char res;
85
     
86
     printf("Geben Sie die Zeile an, in dem Sie ein Schiff platzieren wollen fuer S1\t");     
87
     scanf("%d", &row);
88
     
89
     printf("\nGeben Sie die Spalte an, in der der Anfang des Schiffes S1 platziert wird\t");     
90
     scanf("%d", &colum);
91
     
92
     if(spfe[row-1][colum-1] == LEER)
93
     {
94
                                 int q;
95
                                 for(q = 0; q < 5; q++)
96
                                 {
97
                                       spfe[row-1][colum-1] = sp;
98
                                       spielfeld();
99
                                       colum += 1;
100
                                 } 
101
                                
102
     }
103
     else
104
     {
105
      printf("fehler");    
106
     }
107
     
108
     printf("Geben Sie die Zeile an, in dem Sie ein Schiff platzieren wollen fuer S2\t");     
109
     scanf("%d", &row);
110
     
111
     printf("\nGeben Sie die Spalte an, in der der Anfang des Schiffes S1 platziert wird\t");     
112
     scanf("%d", &colum);
113
     
114
     if(spfeply1[row-1][colum-1] == LEER)
115
     {
116
                                 int w;
117
                                 for(w = 0; w < 2; w++)
118
                                 {
119
                                       spfe[row-1][colum-1] = sp;
120
                                       spielfeld();
121
                                       colum += 1;
122
                                 } 
123
                                
124
     }
125
     else
126
     {
127
      printf("fehler");    
128
     }
129
     
130
     return sp;
131

132
}
133

134

135
int main()
136
{
137

138
 eingb(spieler1, spfeply1[][10]);
139
 eingb(spieler2, spfeply2[][10]);
140

141

142
  system("PAUSE");  
143
  return 0;
144
}

Folgende Meldungen erscheinen: -> Anhanh!
Angehängte Dateien:
#2649884
Lesenswert?
• ▲
▼
M. B. schrieb:
> Das mit den 1sen ist wohl reingerutscht

Aber anhand der Compilermeldung hättest du doch zumindest sehen müssen 
daß die Fehlermeldungen in einer komplett anderen Zeile beginnen als 
dein 2 dim Array.
Wichtig für alle Programmiersprachen VOR ALLEM FÜR C!:
Immer die Fehler von 'oben' beseitigen, manche Fehler führen zu 
seltsamen und verwirrenden Folgemeldungen im Code weiter unten.
Meist ist die erste Meldung die wichtigste.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren