Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<unistd.h>
- #include<time.h>
- //> PRZYDZIAL PAMIECI DLA TABLICY
- int **macierz(int iloscWierszy, int iloscKolumn)
- {
- int **tab;
- int i;
- // PRZYDZIELANIE PAMIECI DLA iloscWierszy WSKAZNIKOW DO DOUBLE
- tab=(int **) malloc( iloscWierszy*sizeof(int *) );
- // BRAK ZADEKLAROWANEJ PAMIECI DLA WIERSZY
- if(tab==NULL)
- {
- fprintf(stderr,"Brak pamieci !\n");
- exit(1);
- }
- // PRZYDZIELANIE PAMIECI DLA iloscWierszy*iloscKolumn LICZB TYPU DOUBLE
- tab[0]=(int *) malloc( iloscWierszy*iloscKolumn*sizeof(int) );
- // BRAK ZADEKLAROWANEJ PAMIECI DLA KOLUMN
- if(tab[0]==NULL)
- {
- fprintf(stderr,"Brak pamieci !\n");
- free(tab); // ZWALNIANIE PAMIECI DLA WIERSZY
- exit(1);
- }
- for(i=1; i<iloscWierszy; i++)
- tab[i]=tab[i-1]+iloscKolumn;
- return tab;
- }
- //> CZYSZCZENIE PAMIECI Z TABLICY
- void zwolnijMacierz(int **tab)
- {
- free(tab[0]); // ZWALNIANIE KOLUMN
- free(tab); // ZWALNIANIE WIERSZY
- }
- //> WYSWIETLANIE TABLICY
- void wyswietlMacierz(int **tab, int w_Max, int k_Max)
- {
- int wiersz, kolumna;
- for(wiersz=0; wiersz<w_Max; wiersz++)
- for(kolumna=0; kolumna<k_Max; kolumna++)
- printf("[%d]%c", tab[wiersz][kolumna], kolumna==k_Max-1 ? '\n' : ' ');
- }
- //> ANALIZOWANIE SASIADUJACYCH POL
- int pole(int **tab, int a, int b)
- {
- int i,j,n=0;
- for(i=a-1;i<=a+1;i++)
- for(j=b-1;j<=b+1;j++)
- {
- if(i!=a && j!=b)
- {
- if(tab[i][j]==1) n=n+1;
- }
- }
- if(tab[a][b]==1 && (n<2 || n>3)) return 0;
- if(tab[a][b]==1 && (n<4 || n>1)) return 1;
- if(tab[a][b]==0 && n==3) return 1;
- else return 0;
- }
- //> PROGRAM WLASCIWY
- int main()
- {
- int **tab1, **tab2;
- int i,j,k;
- int zarodek;
- time_t tt;
- zarodek = time(&tt);
- srand(zarodek);
- int wier=30, kol=0;
- // MACIERZ 1
- tab1=macierz(wier,kol);
- for(i=0;i<wier;i++)
- for(j=0;j<kol;j++)
- tab1[i][j]=0;
- // MACIERZ 2
- tab2=macierz(wier,kol);
- for(i=0;i<wier;i++)
- for(j=0;j<kol;j++)
- tab2[i][j]=0;
- // MACIERZE SA WYZEROWANE
- for(k=0;k+1>0;k++)
- {
- printf("POKOLENIE %d\n\n", k+1);
- wyswietlMacierz(tab1,wier,kol);
- printf("\n");
- for(i=1;i<wier-1;i++)
- for(j=1;j<kol-1;j++)
- tab2[i][j]=pole(tab1,i,j);
- for(i=0;i<wier;i++)
- for(j=0;j<kol;j++)
- tab1[i][j]=tab2[i][j];
- getchar();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement