Program w c (Gra w zycie)

0
#include <stdio.h>
#include <time.h>
#define ROZMIAR 10 //definiujemy ilosc kolumn
#define cykle 35//definiujemy ilosc cykli zyciowych dla komorek
void akcja(int **p,int w,int k,int sasiad);
int **stworz_tablice();
void wyswietl_plansze(int **plansza);
int **cykl_zyciowy(int **plansza);
char martwa=176;
char zywa=219;
int main(void)
{
    srand((unsigned int) time(NULL));
    int **plansza = stworz_tablice();

    for(int i=0; i<cykle; i++)
    {
        wyswietl_plansze(plansza);
        cykl_zyciowy(plansza);
        sleep(10);
        system("cls");
    }
    	return 0;
}

//----------------------------------------------------------------------------------------

int **stworz_tablice()
{

    int **p = (int **) malloc (ROZMIAR * sizeof(int *));
    p[0]=(int*)malloc(ROZMIAR * ROZMIAR *sizeof(int));
    for(int i =1; i < ROZMIAR; i++)
    {
        p[i] = p[0]+ i * ROZMIAR;
    }
    char martwa=176;
    char zywa=219;
    for(int w = 0; w < ROZMIAR; w++)
        for(int k = 0; k < ROZMIAR; k++)
            p[w][k] = (rand()%2? martwa : zywa);
    return p;
}

//----------------------------------------------------------------------------------------

void wyswietl_plansze(int **plansza)
{
    int k,w;
    /* RYSUJE GORNA CZESC TABELKI*/
    for(k = 0 ; k<ROZMIAR ; k++)
        printf("  ");
    printf("\n");
    /* KONCZY RYSOWAĆ GORNA CZESC TABELKI*/
    for(int w = 0; w < ROZMIAR; w++)
    {
        printf("  -");
        for(int k = 0; k < ROZMIAR; k++)
            printf("----");
        printf("\n |");

        for(int k = 0; k < ROZMIAR; k++){
            printf(" %c ", plansza[w][k]);
            printf("|");
    	}
        printf("\n");
    }
    printf("  -");
    for(k = 0 ; k<ROZMIAR ; k++)
        printf("----");
    printf("\n");
}

//----------------------------------------------------------------------------------------

int **cykl_zyciowy(int **p)
{
	
    int sasiad=0;
    int k, i;
//   dla prawego gornego rogu
	k=ROZMIAR-1;
   if(p[0][k-1]==zywa)
        sasiad++;
    if(p[1][k-1]==zywa)
        sasiad++;
    if(p[1][k]==zywa)
        sasiad++;
    akcja(p,i,k,sasiad);
    /// dla lewego gornego rogu
    sasiad=0;
    i=0;
	k=0;

    if(p[i][k+1]==zywa)
        sasiad++;
    if(p[i+1][k+1]==zywa)
        sasiad++;
    if(p[i+1][k]==zywa)
        sasiad++;
    akcja(p,i,k,sasiad);
    /// dla lewego dolnego rogu
    sasiad=0;
    i=ROZMIAR-1,k=0;
    if(p[i-1][k]==zywa)
        sasiad++;
    if(p[i][k+1]==zywa)
        sasiad++;
    if(p[i-1][k+1]==zywa)
        sasiad++;
    akcja(p,i,k,sasiad);
    /// dla prawego dolnego rogu
    sasiad=0;
    i=ROZMIAR-1,k=ROZMIAR-1;
    if(p[i][k-1]==zywa)
        sasiad++;
    if(p[i-1][k-1]==zywa)
        sasiad++;
    if(p[i-1][k]==zywa)
        sasiad++;
    akcja(p,i,k,sasiad);
    
//   dla gory od k 1-8
	sasiad=0;
	i=0; 
	for(k=1; k < ROZMIAR - 1; ++k){
		if(p[i][k] == zywa){
			if(p[i][k-1] == zywa)
				sasiad++;
			if(p[i+1][k-1] == zywa)
				sasiad++;
			if(p[i+1][k] == zywa)
				sasiad++;
			if(p[i+1][k+1] == zywa)	
				sasiad++;
			if(p[i][k+1] == zywa)
				sasiad++;		
		}
		
		if(p[i][k] == martwa){
			if(p[i][k-1] == zywa)
				sasiad++;
			if(p[i+1][k-1] == zywa)
				sasiad++;
			if(p[i+1][k] == zywa)
				sasiad++;
			if(p[i+1][k+1] == zywa)	
				sasiad++;
			if(p[i][k+1] == zywa)
				sasiad++;		
		}
		akcja(p,i,k,sasiad);
	} 
    
//   dla doł k 1-8
	
	sasiad=0;
	i=9;
	for(k=1; k < ROZMIAR - 1; ++k){
		if(p[i][k] == zywa){
			if(p[i][k-1] == zywa)
				sasiad++;
			if(p[i-1][k-1] == zywa)
				sasiad++;
			if(p[i-1][k] == zywa)
				sasiad++;
			if(p[i-1][k+1] == zywa)	
				sasiad++;
			if(p[i][k+1] == zywa)
				sasiad++;		
		}
		
		if(p[i][k] == martwa){
			if(p[i][k-1] == zywa)
				sasiad++;
			if(p[i-1][k-1] == zywa)
				sasiad++;
			if(p[i-1][k] == zywa)
				sasiad++;
			if(p[i-1][k+1] == zywa)	
				sasiad++;
			if(p[i][k+1] == zywa)
				sasiad++;		
		}
		akcja(p,i,k,sasiad);
	} 
	
//  dla lewa str w 1-8

	sasiad=0;
	k=0;
	for(i=1; k < ROZMIAR - 1; ++k){
		if(p[i][k] == zywa){
			if(p[i-1][k] == zywa)
				sasiad++;
			if(p[i-1][k+1] == zywa)
				sasiad++;
			if(p[i][k+1] == zywa)
				sasiad++;
			if(p[i+1][k+1] == zywa)	
				sasiad++;
			if(p[i+1][k] == zywa)
				sasiad++;		
		}
		
		if(p[i][k] == martwa){
			if(p[i-1][k] == zywa)
				sasiad++;
			if(p[i-1][k+1] == zywa)
				sasiad++;
			if(p[i][k+1] == zywa)
				sasiad++;
			if(p[i+1][k+1] == zywa)	
				sasiad++;
			if(p[i+1][k] == zywa)
				sasiad++;	
		}
		akcja(p,i,k,sasiad);
	} 
	
//	dla prawa str 1-8
	
	sasiad=0;
	k=9;
	for(i=1; k < ROZMIAR - 1; ++k){
		if(p[i][k] == zywa){
			if(p[i-1][k] == zywa)
				sasiad++;
			if(p[i-1][k-1] == zywa)
				sasiad++;
			if(p[i][k-1] == zywa)
				sasiad++;
			if(p[i+1][k-1] == zywa)	
				sasiad++;
			if(p[i+1][k] == zywa)
				sasiad++;		
		}
		
		if(p[i][k] == martwa){
			if(p[i-1][k] == zywa)
				sasiad++;
			if(p[i-1][k-1] == zywa)
				sasiad++;
			if(p[i][k-1] == zywa)
				sasiad++;
			if(p[i+1][k-1] == zywa)	
				sasiad++;
			if(p[i+1][k] == zywa)
				sasiad++;	
		}
		akcja(p,i,k,sasiad);
	} 
			 
    
    sasiad=0;
    for(k = 1; k < ROZMIAR - 1; ++k){
    	for(i = 1; i < ROZMIAR -1; ++i){
    		if(p[k][i] == zywa){
    			if(p[k][i+1] == zywa)
    				sasiad++;
    			if(p[k+1][i+1] == zywa)
    				sasiad++;
    			if(p[k+1][i] == zywa)
    				sasiad++;
				if(p[k+1][i-1] == zywa)
    				sasiad++;
				if(p[k][i-1] == zywa)
    				sasiad++;
				if(p[k-1][i-1] == zywa)
    				sasiad++;
				if(p[k-1][i] == zywa)
    				sasiad++;
				if(p[k-1][i+1] == zywa)
    				sasiad++;					
    		}
    		
    		if(p[k][i] == martwa){
    			if(p[k][i+1] == zywa)
    				sasiad++;
    			if(p[k+1][i+1] == zywa)
    				sasiad++;
    			if(p[k+1][i] == zywa)
    				sasiad++;
				if(p[k+1][i-1] == zywa)
    				sasiad++;
				if(p[k][i-1] == zywa)
    				sasiad++;
				if(p[k-1][i-1] == zywa)
    				sasiad++;
				if(p[k-1][i] == zywa)
    				sasiad++;
				if(p[k-1][i+1] == zywa)
    				sasiad++;					
    		}
    		akcja(p, k, i, sasiad);
    	}
    }
    return p;
}

//----------------------------------------------------------------------------------------

void akcja(int **p,int w,int k,int sasiad)
{
    if(sasiad == 3)
        p[w][k] = zywa;
    if(sasiad == 3 && sasiad == 2)
        p[w][k] = zywa;
    if(sasiad == 1 && sasiad == 0)
    	p[w][k] = zywa;
    if(sasiad >= 4)
        p[w][k]=martwa;
}

Mam problem z tym programem, coś nie chce mi go kompilować.
Temat:
Dana jest tablica 10x10 symbolizująca komórki. Tablicę należy w sposób losowo wypełnić liczbami „0” lub „1”. Można przyjąć, że „0” oznacza martwą komórkę a „1” żywą komórkę. Typowa komórka ma ośmiu sąsiadów (z lewej, z prawej, z góry, z dołu oraz czterech po skosach). Komórka zmienia swój stan (żywa lub martwa) wg następujących reguł:
a) komórka staje się żywa gdy ma dokładnie trzech żywych sąsiadów
b) komórka pozostaje żywa gdy ma 2 lub 3 sąsiadów
c) komórka umiera gdy ma mniej niż 2 sąsiadów (umiera z samotności)
d) komórka umiera gdy ma więcej niż 4 sąsiadów (umiera z przeludnienia)

0

A kompilator nie przyznaje się co do tego czemu mu się to nie podoba?
Ustaw kompilacje w wersji C99 dla gcc: -std=c99

0

Taki komunikat mi wyswietla

Message : Thread Error: Nieprawidłowe dojście (6)
Address : 0x0012765C

0

Kompilacja jest ustawiona na C99

2

Moja rada, wywal ten program i zacznij od nowa.

0

musisz zainkludować dwie dodaktowe biblioteki dla "sleep" i "system"
#include <stdlib.h>
#include <windows.h>
i wszystko śmiga poprawnie

1 użytkowników online, w tym zalogowanych: 0, gości: 1