Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void vysledky(int code)
  5. {
  6. switch(code)
  7. {
  8. case 1:
  9. printf("---Vysledky---\nNespravny vstup.\n");
  10. exit(1);
  11. break;
  12. }
  13. }
  14.  
  15. void readInteger(int * d)
  16. {
  17. int ret = scanf("%d", d);
  18. if(ret == 0 || ret == EOF)
  19. {
  20. vysledky(1);
  21. }
  22. }
  23.  
  24. int main()
  25. {
  26. int ruleNumber;
  27. readInteger(&ruleNumber);
  28. if(ruleNumber < 0 || ruleNumber > 255)
  29. vysledky(1);
  30.  
  31. int i, rule[8];
  32. for(i = 0; i < 8; ++i)
  33. {
  34. rule[i] = ruleNumber & (1 << i) ? 1 : 0;
  35. printf("%d ", rule[i]);
  36. }
  37. printf("\n");
  38.  
  39. int steps;
  40. readInteger(&steps);
  41. if(steps < 0)
  42. vysledky(1);
  43.  
  44. int length;
  45. readInteger(&length);
  46. if(length <= 0)
  47. vysledky(1);
  48.  
  49. int jednickyCelkem = 0;
  50. int * jednicky;
  51. int ** array; // steps + 1 rows, length columns
  52.  
  53. jednicky = (int *)malloc((steps + 1) * sizeof(int *));
  54. array = (int **)malloc((steps + 1) * sizeof(int **));
  55.  
  56. array[0] = (int *)malloc(length * sizeof(int *));
  57. jednicky[0] = 0;
  58. for(i = 0; i < length; ++i)
  59. {
  60. readInteger(&array[0][i]);
  61. if(array[0][i] != 0 && array[0][i] != 1)
  62. vysledky(1);
  63. }
  64.  
  65. printf("---Vysledky---\n");
  66. for(i = 0; i < length; ++i)
  67. {
  68. printf("%c", array[0][i] == 0 ? '.' : '*');
  69. if(array[0][i] == 1)
  70. {
  71. jednickyCelkem++;
  72. jednicky[0]++;
  73. }
  74. }
  75. printf("\n");
  76.  
  77. int j, k;
  78. for(i = 1; i <= steps; ++i)
  79. {
  80. array[i] = (int *)malloc(length * sizeof(int *));
  81. jednicky[i] = 0;
  82. int * cur = array[i];
  83. int * prev = array[i - 1];
  84. for(j = 0; j < length; ++j)
  85. {
  86. int x = 0;
  87. for(k = 0; k < 3; ++k)
  88. x |= ((j + k - 1) >= 0 && (j + k - 1) < length) ? prev[j + k - 1] << (2 - k) : 0;
  89. cur[j] = rule[x];
  90. printf("%c", cur[j] == 0 ? '.' : '*');
  91. //printf("%d\n", x);
  92. if(cur[j] == 1)
  93. {
  94. jednickyCelkem++;
  95. jednicky[i]++;
  96. }
  97. }
  98. printf("\n");
  99. }
  100.  
  101. printf("Celkovy pocet jednicek je %d\n", jednickyCelkem);
  102.  
  103. for(i = 0; i <= jednickyCelkem; ++i)
  104. {
  105. for(j = 0; j <= steps; ++j)
  106. {
  107. if(i == jednicky[j])
  108. {
  109. for(k = 0; k < length; ++k)
  110. printf("%c", array[j][k] == 0 ? '.' : '*');
  111. printf("\n");
  112. }
  113. }
  114. }
  115.  
  116. return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement