Advertisement
Guest User

dz2

a guest
Apr 25th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. int **a, n, i, j, pom;
  6. while (1) {
  7. printf_s("Broj elemenata matrice: ");
  8. scanf_s("%d", &n);
  9. if (n <= 0)
  10. break;
  11. a = calloc(n, sizeof(int*));
  12. if (a == NULL)
  13. {
  14. printf_s("Greska pri alociranju memorije!");
  15. exit(1);
  16. }
  17.  
  18. printf_s("\n Popunjavanje matrice: \n\n");
  19. for (i = 0; i<n; i++) {
  20. *(a + i) = calloc(n, sizeof(int));
  21. if (*(a + i) == NULL)
  22. {
  23. printf_s("Greska pri alociranju memorije!");
  24. exit(1);
  25. }
  26.  
  27. for (j = 0; j < n;)
  28. {
  29. printf_s("Unesi %d . vrstu, %d . kolonu: ", i + 1, j + 1);
  30. scanf_s("%d", &pom);
  31. if (pom != 0 && pom != 1 && pom != 2)
  32. {
  33. printf_s("Greska, unesi opet: ");
  34. continue;
  35. }
  36. else {
  37. *(*(a + i) + j) = pom;
  38. }
  39. j++;
  40. }
  41. }
  42. printf_s("\nIspis matrice: \n\n");
  43. for (i = 0; i<n; i++) {
  44. for (j = 0; j < n; j++)
  45. {
  46. printf_s("| %d | ", *(*(a + i) + j));
  47. }
  48. printf_s("\n\n");
  49. }
  50.  
  51. int pombr = 0;
  52. //iks oks - horizontalna provera
  53. for (i = 0; i<n; i++) {
  54. if (**(a + i) == 0)
  55. continue;
  56. pombr = 0;
  57. for (j = 0; j < n; j++)
  58. {
  59. if (*(*(a + i) + j) == **(a + i))
  60. {
  61. pombr++;
  62. }
  63. }
  64. if (pombr == n)
  65. {
  66.  
  67. printf("Pobeda! %d . red, horizontalno!\n\n", i + 1);
  68. }
  69.  
  70. }
  71.  
  72. pombr = 0;
  73. //iks oks - vertikalna provera
  74. for (i = 0; i<n; i++) {
  75. if (*(*a + i) == 0)
  76. continue;
  77. pombr = 0;
  78. for (j = 0; j < n; j++)
  79. {
  80. //printf(" ELEMENT1: %d ELEMENT2: %d\n\n", *(*a + i), *(*(a + j) + i));
  81. if (*(*(a + j) + i) == *(*a + i))
  82. {
  83. pombr++;
  84. }
  85. }
  86. if (pombr == n)
  87. {
  88.  
  89. printf("Pobeda! %d . red, vertikalno!\n\n", i + 1);
  90. }
  91. }
  92. //iks oks - dijagonala 1
  93. int pobeda = 0;
  94. if (**a != 0)
  95. {
  96. pobeda = 1;
  97. for (i = 0; i < n; i++) {
  98. if (*(*(a + i) + i) != **a)
  99. {
  100. pobeda = 0;
  101. break;
  102. }
  103.  
  104. }
  105.  
  106. }
  107. if (pobeda == 1)
  108. {
  109. printf("Pobeda! Glavna dijagonala! \n\n");
  110. }
  111. //iks oks - dijagonala 2
  112. pobeda = 0;
  113. if (**(a + n - 1) != 0)
  114. {
  115. pobeda = 1;
  116. for (i = 0; i < n; i++) {
  117. //printf(" Uporedjivanje: pocetna %d = trenutna %d \n\n", **(a + n - 1), *(*(a + n-i-1) + i));
  118. if (*(*(a + n - i - 1) + i) != **(a + n - 1))
  119. {
  120. pobeda = 0;
  121. break;
  122. }
  123. }
  124. }
  125. if (pobeda == 1)
  126. {
  127. printf("Pobeda! Sporedna dijagonala! \n\n");
  128. }
  129.  
  130. for (i = 0; i<n; i++)
  131. free(a[i]);
  132. free(a);
  133.  
  134. }
  135. return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement