Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void vysledky(int code)
- {
- switch(code)
- {
- case 1:
- printf("---Vysledky---\nNespravny vstup.\n");
- exit(1);
- break;
- }
- }
- void readInteger(int * d)
- {
- int ret = scanf("%d", d);
- if(ret == 0 || ret == EOF)
- {
- vysledky(1);
- }
- }
- int main()
- {
- int ruleNumber;
- readInteger(&ruleNumber);
- if(ruleNumber < 0 || ruleNumber > 255)
- vysledky(1);
- int i, rule[8];
- for(i = 0; i < 8; ++i)
- {
- rule[i] = ruleNumber & (1 << i) ? 1 : 0;
- printf("%d ", rule[i]);
- }
- printf("\n");
- int steps;
- readInteger(&steps);
- if(steps < 0)
- vysledky(1);
- int length;
- readInteger(&length);
- if(length <= 0)
- vysledky(1);
- int jednickyCelkem = 0;
- int * jednicky;
- int ** array; // steps + 1 rows, length columns
- jednicky = (int *)malloc((steps + 1) * sizeof(int *));
- array = (int **)malloc((steps + 1) * sizeof(int **));
- array[0] = (int *)malloc(length * sizeof(int *));
- jednicky[0] = 0;
- for(i = 0; i < length; ++i)
- {
- readInteger(&array[0][i]);
- if(array[0][i] != 0 && array[0][i] != 1)
- vysledky(1);
- }
- printf("---Vysledky---\n");
- for(i = 0; i < length; ++i)
- {
- printf("%c", array[0][i] == 0 ? '.' : '*');
- if(array[0][i] == 1)
- {
- jednickyCelkem++;
- jednicky[0]++;
- }
- }
- printf("\n");
- int j, k;
- for(i = 1; i <= steps; ++i)
- {
- array[i] = (int *)malloc(length * sizeof(int *));
- jednicky[i] = 0;
- int * cur = array[i];
- int * prev = array[i - 1];
- for(j = 0; j < length; ++j)
- {
- int x = 0;
- for(k = 0; k < 3; ++k)
- x |= ((j + k - 1) >= 0 && (j + k - 1) < length) ? prev[j + k - 1] << (2 - k) : 0;
- cur[j] = rule[x];
- printf("%c", cur[j] == 0 ? '.' : '*');
- //printf("%d\n", x);
- if(cur[j] == 1)
- {
- jednickyCelkem++;
- jednicky[i]++;
- }
- }
- printf("\n");
- }
- printf("Celkovy pocet jednicek je %d\n", jednickyCelkem);
- for(i = 0; i <= jednickyCelkem; ++i)
- {
- for(j = 0; j <= steps; ++j)
- {
- if(i == jednicky[j])
- {
- for(k = 0; k < length; ++k)
- printf("%c", array[j][k] == 0 ? '.' : '*');
- printf("\n");
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement