Schiffe versenken in C |
Lars unregistriert
 |
|
Meine Frage:
Ich bin's mal wieder, diesmal müssen wir in C Schiffe versenken programmieren und haben dafür eine Vorgabe bekommen. Bloß das Zählen, ob alle Schiffe versenkt wurden klappt net, ich verstehe nicht wieso. Es geht bis zu einer bestimmten Zahl, aber für alle klappts nicht
.
Meine Ideen:
| code: |
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:
|
#include <stdio.h>
void anzeigen(char feld[][10])
{
for (int i = 0; i != 10; ++i)
{
for (int j = 0; j != 10; ++j)
printf("%c", feld[i][j]);
printf("\n");
}
}
int main()
{
char spielfeld[10][10] = {
{'s','s','.','s','.','.','s','s','s','s'},
{'.','.','.','s','.','.','.','.','.','.'},
{'s','.','.','s','.','s','s','s','.','s'},
{'s','.','.','.','.','.','.','.','.','s'},
{'s','.','.','.','.','.','.','.','.','.'},
{'s','.','.','.','.','s','.','.','.','s'},
{'.','.','.','.','.','s','.','.','.','s'},
{'s','s','.','.','.','.','.','.','.','s'},
{'.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','s','s','s','s','s'}
};
int schritte = 0;
int y=0;
while(y!=30)
{
anzeigen(spielfeld);
int xko = 0;
int yko = 0;
printf("\nFalls du beenden willst, gib [-1] ein");
printf("\nGib die x-Koordinate (Spalte) ein, die du beschiessen willst (1-10): ");
scanf("%i", &xko);
printf("\nGib die y-Koordinate (Zeile) ein, die du beschiessen willst (1-10): ");
scanf("%i", &yko);
if(xko==-1 || yko==-1)break;
schritte++;
if(spielfeld[yko-1][xko-1] == 's')
{
printf("\nGetroffen! \n");
spielfeld[yko-1][xko-1] = 'x';
}
else printf("\nnicht Getroffen. \n");
for (int i = 0; i != 10; ++i)
{
int x=0;
for (int j = 0; j != 10; ++j)
if(spielfeld[i][j]=='x')x++;
if(x==30)
{
anzeigen(spielfeld);
y=x;
continue;
}
}
}
weiter: printf("Das waren %i Runden.\n", schritte);
return 0;
}
|
|
|
|
11.12.2015 21:16 |
|
|
Lars unregistriert
 |
|
Sorry, ich bin dämlich, ich hab das x falsch deklariert, nun funktioniert alles. Und ich saß 1h und hab den Fehler gesucht...
| code: |
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:
|
#include <stdio.h>
void anzeigen(char feld[][10])
{
for (int i = 0; i != 10; ++i)
{
for (int j = 0; j != 10; ++j)
printf("%c", feld[i][j]);
printf("\n");
}
}
int main()
{
char spielfeld[10][10] = {
{'s','s','.','s','.','.','s','s','s','s'},
{'.','.','.','s','.','.','.','.','.','.'},
{'s','.','.','s','.','s','s','s','.','s'},
{'s','.','.','.','.','.','.','.','.','s'},
{'s','.','.','.','.','.','.','.','.','.'},
{'s','.','.','.','.','s','.','.','.','s'},
{'.','.','.','.','.','s','.','.','.','s'},
{'s','s','.','.','.','.','.','.','.','s'},
{'.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','s','s','s','s','s'}
};
int schritte = 0;
int y=0;
while(y!=30)
{
anzeigen(spielfeld);
int xko = 0;
int yko = 0;
printf("\nFalls du beenden willst, gib [-1] ein");
printf("\nGib die x-Koordinate (Spalte) ein, die du beschiessen willst (1-10): ");
scanf("%i", &xko);
printf("\nGib die y-Koordinate (Zeile) ein, die du beschiessen willst (1-10): ");
scanf("%i", &yko);
if(xko==-1 || yko==-1)break;
schritte++;
if(spielfeld[yko-1][xko-1] == 's')
{
printf("\nGetroffen! \n");
spielfeld[yko-1][xko-1] = 'x';
}
else printf("\nnicht Getroffen. \n");
int x=0;
for (int s = 0; s != 10; ++s)
{
for (int d = 0; d != 10; ++d)
if(spielfeld[s][d]=='x')x++;
if(x==30)
{
anzeigen(spielfeld);
y=x;
continue;
}
}
}
|
|
|
|
11.12.2015 21:36 |
|
|
|