Syntaxfehler
-
Hi,
ich habe folgenden Code und bekomme diese blöden Syntaxfehler nicht weg.
Vielleicht hab ich ja irgendwo ein Semikolon oder eine geschweifte Klammer zuviel oder vergessen.
THX Stefan#include <stdio.h> #define MATRIX_SIZE 10 int worldmap[2][MATRIX_SIZE + 2][MATRIX_SIZE +2]; /* = { { { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,1,0,0,1,1,0,1,1,0,1,0 }, { 0,1,0,0,1,1,0,1,1,0,1,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,1,1,1,0,0,0,0,0 }, { 0,0,0,0,1,1,1,0,0,0,0,0 }, { 0,0,0,0,1,1,1,0,0,0,0,0 }, { 0,0,0,0,1,1,1,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 } }, { { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0 } } }; */ int this_generation, last_generation; int num_generation = 0; int init_world(); int next_gen(); int put_world(); int main() { printf("Das Spiel des Lebens\n\n"); init_world(); for (num_generation=1; num_generation <= 10; num_generation++) { if (num_generation % 2) { this_generation = 1; last_generation = 0; } else { this_generation = 0; last_generation = 1; } next_gen(); put_world(); printf("\"Enter\" druecken fuer das naechste Jahr"); getchar(); } return (0); } int init_world() { int x,y; printf("Eingabe der Koordinaten, an denen sich zu Beginn ein \n"); printf("Lebewesen befinden soll. (0 0 zum beenden der Eingabe)\n"); do { printf("\nx: "); scanf("%d",&x); printf("y: "); scanf("%d",&y); if (x && y) worldmap[0][x][y] = 1; } while (x && y); printf("\nIhre Eingaben erzeugen folgendes Feld:\n"); put_world(); printf("Druecken Sie \"Enter\" um sich die Entwicklung der ersten\n"); printf("10 Jahre zu betrachten"); getchar(); getchar(); return (0); } int next_gen() { int num_neighbors(int x, int y) { int number=0; /* go round robin and count */ if (worldmap[last_generation] [x-1] [y-1] ) number++; if (worldmap[last_generation] [x] [y-1] ) number++; if (worldmap[last_generation] [x+1] [y-1] ) number++; if (worldmap[last_generation] [x-1] [y] ) number++; if (worldmap[last_generation] [x+1] [y] ) number++; if (worldmap[last_generation] [x-1] [y+1] ) number++; if (worldmap[last_generation] [x] [y+1] ) number++; if (worldmap[last_generation] [x+1] [y+1] ) number++; return number; } int x,y; for (y=1; y <= MATRIX_SIZE; y++) { for (x=1; x <= MATRIX_SIZE; x++) { /* anyone here? */ if (worldmap[last_generation][x][y]) { /* [yes] is it time to die? */ if ((num_neighbors(x,y) < 2) || (num_neighbors(x,y) > 3)) { worldmap[this_generation][x][y] = 0; } else { worldmap[this_generation][x][y] = 1; } } else { /* [no] happy birthday? */ if (num_neighbors(x,y) == 3) { worldmap[this_generation][x][y] = 1; } else { worldmap[this_generation][x][y] = 0; } } } } printf("\n"); return (0); } int put_world() { int x,y; printf("Nach dem %d. Jahr:\n",num_generation); printf("+---------------------+\n"); for (y=1; y <= MATRIX_SIZE; y++) { printf("|"); for (x=1; x <= MATRIX_SIZE; x++) { if (worldmap[this_generation][x][y]) { printf(" *"); } else { printf(" "); } } printf(" |\n"); } printf("+---------------------+\n"); return (0); }
<edit=kingruedi> sfds wmfrs <-- lesen! </edit>
-
lässt sich ohne Fehler oder Warnung kompilieren.
Vielleicht schreibst du mal, was für einen Fehler du bekommst?
btw. code-tags werden in
eingeschlossen.
-
*lol*
1. falsches Forum
2. code tags benutzen, so erkennt man niemals im Leben, ob eine Klammer vergessen worden ist
-
Hi ich bekomme folgenden fehler:
error C2601: 'num_neighbors': Lokale Funktionsdefinitionen ind unzulässig
Gruß Stefan
-
Du kannst halt keine Funktionen in einer Funktion erstellen. Die Fehlermeldung spricht doch eigentlich für sich selbst
-
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Und wie kann ich das anders lösen?
Gruß Stefan
-
C++ Forumbot schrieb:
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.
tsts, das war aber ein C Programm
ich hatte mir den Quelltext gar nicht angesehen, nur durch gcc gejagt und der hat keine Probleme mit Funktionen in Funktionen
-
swagner3 schrieb:
Und wie kann ich das anders lösen?
Gruß Stefandie funktionen nicht innerhalb anderer funktionen definieren.
-
Ich habe es hinbekommen.
#include <stdio.h> #define MATRIX_GROESSE 10 int weltkarte[2][MATRIX_GROESSE + 2][MATRIX_GROESSE + 2]; int diese_gen, letzte_gen; int zaehle_gen = 0; int init_world(); int next_gen(); int put_world(); int main() { printf("Das Spiel des Lebens\n\n"); init_world(); for (zaehle_gen=1; zaehle_gen <= 10; zaehle_gen++) { if (zaehle_gen % 2) { diese_gen = 1; letzte_gen = 0; } else { diese_gen = 0; letzte_gen = 1; } next_gen(); put_world(); printf("Bitte die \"Enter\" Taste druecken fuer das naechste Jahr"); getchar(); } return (0); } int init_world() { int x,y; printf("Bitte geben Sie die Koordinaten ein, an denen sich zu Beginn ein \n"); printf("Lebewesen befinden soll. (0 0 zum beenden der Eingabe verwenden)\n"); do { printf("\nx: "); scanf("%d",&x); printf("y: "); scanf("%d",&y); if (x && y) weltkarte[0][x][y] = 1; } while (x && y); printf("\nFolgende Matrixwird erzeugt:\n"); put_world(); printf("Bitte druecken Sie die \"Enter\" Taste um sich die Entwicklung der ersten\n"); printf("10 Jahre zu betrachten"); getchar(); getchar(); return (0); } int num_neighbors(int x, int y) { int zaehler=0; if (weltkarte[letzte_gen] [x-1] [y-1]) zaehler++; if (weltkarte[letzte_gen] [x] [y-1]) zaehler++; if (weltkarte[letzte_gen] [x+1] [y-1]) zaehler++; if (weltkarte[letzte_gen] [x-1] [y]) zaehler++; if (weltkarte[letzte_gen] [x+1] [y]) zaehler++; if (weltkarte[letzte_gen] [x-1] [y+1]) zaehler++; if (weltkarte[letzte_gen] [x] [y+1]) zaehler++; if (weltkarte[letzte_gen] [x+1] [y+1]) zaehler++; return zaehler; } int next_gen() { int x,y; for (y=1; y <= MATRIX_GROESSE; y++) { for (x=1; x <= MATRIX_GROESSE; x++) { if (weltkarte[letzte_gen][x][y]) { if ((num_neighbors(x,y) < 2) || (num_neighbors(x,y) > 3)) { weltkarte[diese_gen][x][y] = 0; } else { weltkarte[diese_gen][x][y] = 1; } } else { if (num_neighbors(x,y) == 3) { weltkarte[diese_gen][x][y] = 1; } else { weltkarte[diese_gen][x][y] = 0; } } } } printf("\n"); return (0); } int put_world() { int x,y; printf("Nach dem %d. Jahr:\n",zaehle_gen); printf("+---------------------+\n"); for (y=1; y <= MATRIX_GROESSE; y++) { printf("|"); for (x=1; x <= MATRIX_GROESSE; x++) { if (weltkarte[diese_gen][x][y]) { printf(" *"); } else { printf(" "); } } printf(" |\n"); } printf("+---------------------+\n"); return (0); }
Viele Dank für die schnelle Hilfe.