Advertisement
lama2123

Untitled

Nov 23rd, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.79 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. /*
  4. Dwie liczby naturalne s¹ „przyjació³kami je¿eli zbiory cyfr z których zbudowane s¹ liczby s¹ identyczne.
  5. Na przyk³ad: 123 i 321, 211 i 122, 35 3553. Dana jest tablica int t[MAX][MAX] wype³niona liczbami naturalnymi.
  6. Proszê napisad funkcjê,
  7. która dla tablicy t zwraca ile elementów tablicy s¹siaduje wy³¹cznie z przyjació³kami
  8. */
  9. const int N = 3;
  10. bool areFriends(int a, int b);
  11. void print_table(int tab[N][N]);
  12. int checkTabIfFriends(int tab[N][N]);
  13. int counter_of_digits(int n);
  14.  
  15. int main()
  16. {
  17. int tab[N][N];
  18. for(int i=0; i<N; i++)
  19. {
  20. for(int j=0; j<N; j++)
  21. {
  22. cin>>tab[i][j];
  23. }
  24. }
  25. cout<<endl;
  26. print_table(tab);
  27. cout<<checkTabIfFriends(tab);
  28. return 0;
  29. }
  30.  
  31. int checkTabIfFriends(int tab[N][N])
  32. {
  33. int counter = 0;
  34. bool isFriend[N][N];
  35. for(int i=0; i<N; i++)
  36. for(int j=0; j<N; j++)
  37. isFriend[i][j] = 0;
  38.  
  39. for(int x=0; x<N; x++)
  40. {
  41. for(int y=0; y<N; y++)
  42. {
  43. if(x > 0 && y > 0 && x < N-1 && y < N-1)
  44. {
  45. if(areFriends(tab[x][y],tab[x-1][y-1])
  46. && areFriends(tab[x][y],tab[x-1][y])
  47. && areFriends(tab[x][y],tab[x-1][y+1])
  48. && areFriends(tab[x][y],tab[x][y-1])
  49. && areFriends(tab[x][y],tab[x][y+1])
  50. && areFriends(tab[x][y],tab[x+1][y])
  51. && areFriends(tab[x][y],tab[x+1][y-1])
  52. && areFriends(tab[x][y],tab[x+1][y+1]))
  53. counter++;
  54. }
  55. else if(y == 0 && x != 0 && x != N-1)
  56. {
  57. if(areFriends(tab[x][0],tab[x-1][0])
  58. && areFriends(tab[x][0],tab[x-1][1])
  59. && areFriends(tab[x][0],tab[x][1])
  60. && areFriends(tab[x][0],tab[x+1][0])
  61. && areFriends(tab[x][0],tab[x+1][1]))
  62. counter++;
  63. }
  64. else if(y == N-1 && x != 0 && x != N-1)
  65. {
  66. if(areFriends(tab[x][N-1],tab[x-1][N-1])
  67. && areFriends(tab[x][N-1],tab[x-1][N-2])
  68. && areFriends(tab[x][N-1],tab[x][N-2])
  69. && areFriends(tab[x][N-1],tab[x+1][N-2])
  70. && areFriends(tab[x][N-1],tab[x+1][N-1]))
  71. counter++;
  72. }
  73. else if(x == 0 && y != 0 && y != N-1)
  74. {
  75. if(areFriends(tab[0][y],tab[0][y-1])
  76. && areFriends(tab[0][y],tab[0][y+1])
  77. && areFriends(tab[0][y],tab[1][y-1])
  78. && areFriends(tab[0][y],tab[1][y])
  79. && areFriends(tab[0][y],tab[1][y+1]))
  80. counter++;
  81. }
  82. else if(x == N-1 && y != 0 && y != N-1)
  83. {
  84. if(areFriends(tab[N-1][y],tab[N-1][y-1])
  85. && areFriends(tab[N-1][y],tab[N-1][y+1])
  86. && areFriends(tab[N-1][y],tab[N-2][y-1])
  87. && areFriends(tab[N-1][y],tab[N-2][y])
  88. && areFriends(tab[N-1][y],tab[N-2][y+1]))
  89. counter++;
  90. }
  91.  
  92. }
  93. }
  94.  
  95. if(areFriends(tab[0][0],tab[0][1])
  96. && areFriends(tab[0][0],tab[1][0])
  97. && areFriends(tab[0][0],tab[1][1]))
  98. counter++;
  99.  
  100. if(areFriends(tab[N-1][N-1],tab[N-2][N-2])
  101. && areFriends(tab[N-1][N-1],tab[N-1][N-2])
  102. && areFriends(tab[N-1][N-1],tab[N-2][N-1]))
  103. counter++;
  104. if(areFriends(tab[0][N-1],tab[0][N-2])
  105. && areFriends(tab[0][N-1],tab[1][N-1])
  106. && areFriends(tab[0][N-1],tab[1][N-2]))
  107. counter++;
  108. if(areFriends(tab[N-1][0],tab[N-2][0])
  109. && areFriends(tab[N-1][0],tab[N-2][1])
  110. && areFriends(tab[N-1][0],tab[N-1][1]))
  111. counter++;
  112.  
  113. return counter;
  114. }
  115.  
  116. bool areFriends(int a, int b)
  117. {
  118. int x = a;
  119. int y = b;
  120.  
  121. int tab1[10];
  122. int tab2[10];
  123.  
  124. for(int i=0; i < 10; i++)
  125. tab1[i] = 0;
  126. for(int i=0; i < 10; i++)
  127. tab2[i] = 0;
  128.  
  129. while(x > 0){
  130. int ost = x%10;
  131. tab1[ost]++;
  132. x /= 10;
  133. }
  134. while(y > 0){
  135. int ost = y%10;
  136. tab2[ost]++;
  137. y /= 10;
  138. }
  139. for(int i=0; i < 10; i++){
  140. if((tab1[i] != 0 && tab2[i] == 0) || (tab2[i] == 0 && tab2[i] != 0))
  141. return false;
  142. }
  143. return true;
  144.  
  145. }
  146.  
  147. void print_table(int tab[N][N])
  148. {
  149. for(int i=0; i<N; i++)
  150. {
  151. for(int j=0; j<N; j++)
  152. {
  153. cout<<tab[i][j]<<"\t";
  154. }
  155. cout<<endl<<endl;
  156. }
  157. }
  158.  
  159. int counter_of_digits(int n)
  160. {
  161. int next = n;
  162. int counter = 0;
  163. while(next > 0)
  164. {
  165. counter++;
  166. next /= 10;
  167. }
  168. return counter;
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement