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ß Stefan

    die 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.


Anmelden zum Antworten