Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <cstdlib>
  4. #include <iomanip>
  5.  
  6. #define N 4
  7. #define K 4
  8.  
  9. void fillArray(int array[][K], int howManyRows, int maxValue, int minValue)
  10. {
  11. for (int rows = 0; rows < howManyRows; rows++)
  12. {
  13. for (int columns = 0; columns < K; columns++)
  14. array[rows][columns] = std::rand() % (maxValue - minValue + 1) + minValue;
  15. }
  16. }
  17.  
  18. void printArray(int array[][K], int howManyRows)
  19. {
  20. for (int rows = 0; rows < howManyRows; rows++)
  21. {
  22. for (int columns = 0; columns < K; columns++)
  23. std::cout << std::setw(5) << array[rows][columns] << " ";
  24.  
  25. std::cout << std::endl;
  26. }
  27. }
  28.  
  29. bool meanOfOddNumber (int array[][K], int howManyRows, double &meanOfOdds)
  30. {
  31. int sum = 0;
  32. int howManyOdds = 0;
  33. meanOfOdds = 0;
  34. for (int rows = 0; rows < howManyRows; rows++)
  35. {
  36. for (int columns = 0; columns < K; columns++)
  37. {
  38. if (array[rows][columns] % 2 != 0)
  39. {
  40. sum = sum + array[rows][columns];
  41. howManyOdds++;
  42. }
  43. }
  44. }
  45.  
  46. if (howManyOdds == 0) return false;
  47. else
  48. {
  49. meanOfOdds = static_cast<double>(sum)/howManyOdds;
  50. return true;
  51. }
  52. }
  53.  
  54. void fillArrayD(int arrayToBeFiled[], int arrayWithValues[][K], int howManyRows)
  55. {
  56. int oneDim = 0;
  57. int sum = 0;
  58. for (int rows = 0; rows < howManyRows; rows++)
  59. {
  60. for(int columns = 0; columns < K; columns++)
  61. {
  62. sum = sum + arrayWithValues[rows][columns];
  63. }
  64. arrayToBeFiled[oneDim] = sum;
  65. oneDim++;
  66. sum = 0;
  67. }
  68. }
  69.  
  70. void fillArrayC(int arrayToBeFilled[], int arrayWithValues[][K], int howManyRows)
  71. {
  72. int oneDim = 0;
  73. int biggestValue = arrayWithValues[0][0];
  74.  
  75. for (int rows = 0; rows < howManyRows; rows++)
  76. {
  77. for(int columns = 0; columns < K; columns++)
  78. {
  79. if (biggestValue <= arrayWithValues[rows][columns])
  80. biggestValue = arrayWithValues[rows][columns];
  81. }
  82.  
  83. arrayToBeFilled[oneDim] = biggestValue;
  84. oneDim++;
  85. biggestValue = arrayWithValues[rows + 1][0];
  86. }
  87. }
  88.  
  89. void quickSort(int array[][K], int left, int right, int columns)
  90. {
  91. int i = left;
  92. int j = right;
  93. int x = array[(left + right) / 2][columns];
  94.  
  95. do
  96. {
  97. while (array[i][columns] < x)
  98. i++;
  99.  
  100. while (array[j][columns] > x)
  101. j--;
  102.  
  103. if (i <= j)
  104. {
  105. int temp = array[i][columns];
  106. array[i][columns] = array[j][columns];
  107. array[j][columns] = temp;
  108. i++;
  109. j--;
  110. }
  111.  
  112. } while (i <= j);
  113.  
  114. if (left < j) quickSort(array, left, j, columns);
  115. if (right > i) quickSort(array, i, right, columns);
  116. }
  117.  
  118. void replaceRows(int A[][K], int row1, int row2)
  119.  
  120. for (int columns = 0; columns < K; columns++)
  121. {
  122. int temp = array[row1][columns];
  123. array[row1][columns] = array[row2][columns];
  124. array[row2][columns] = temp;
  125. }
  126. int main()
  127. {
  128. //wywolanie funkcji srand
  129. std::srand(time(0));
  130.  
  131. //zad 1
  132. int A[N][K], B[N][K], p, k;
  133.  
  134. std::cout << "Podaj poczatek przedzialu pseudolosowego (p): ";
  135. std::cin >> p;
  136.  
  137. std::cout << "Podaj koniec przedzialu pseudolosowego (k): ";
  138. std::cin >> k;
  139.  
  140. while (k <= p)
  141. {
  142. std::cout << "Koniec przedzialu musi byc wiekszy od poczatku! Sprobuj ponownie: ";
  143. std::cin >> k;
  144. }
  145.  
  146. fillArray(A, N, k, p);
  147. fillArray(B, N, k, p);
  148.  
  149. //zad 2
  150. std::cout << "Tablica A: " << std::endl;
  151. printArray(A, N);
  152.  
  153. std::cout << "Tablica B: " << std::endl;
  154. printArray(B, N);
  155.  
  156. //zad 3
  157. double meanA, meanB;
  158. bool oddsA = meanOfOddNumber(A, N, meanA);
  159. bool oddsB = meanOfOddNumber(B, N, meanB);
  160.  
  161. if (oddsA == false) std::cout << "W tablicy A brak liczb nieparzystych!" << std::endl;
  162. else std::cout << "Srednia liczb nieparzystych w tablicy A to " << meanA << "." << std::endl;
  163.  
  164. if (oddsB == false) std::cout << "W tablicy B brak liczb nieparzystych!" << std::endl;
  165. else std::cout << "Srednia liczb nieparzystych w tablicy B to " << meanB << "." << std::endl;
  166.  
  167. //zad 4
  168. int D[N] = { 0 };
  169. fillArrayD(D, A, N);
  170.  
  171. std::cout << "Tablica D: " << std::endl;
  172.  
  173. for (int i = 0; i < N; i++)
  174. std::cout << std::setw(2) << D[i] << " ";
  175.  
  176. std::cout << std::endl;
  177.  
  178. //zad 5
  179. int C[N] = { 0 };
  180.  
  181. fillArrayC(C, A, N);
  182.  
  183. std::cout << "Tablica C: " << std::endl;
  184.  
  185. for (int i = 0; i < N; i++)
  186. std::cout << std::setw(2) << C[i] << " ";
  187.  
  188. std::cout << std::endl;
  189.  
  190. //zad 6
  191. for (int columns = 0; columns < K; columns++)
  192. quickSort(B, 0, (N - 1), columns);
  193.  
  194. std::cout << "Tablica B: " << std::endl;
  195. printArray(B, N);
  196.  
  197. //zad 7
  198.  
  199. int row1, row2;
  200.  
  201. std::cout << "Podaj wiersze w tablicy A do zamiany. Wiersz pierwszy: ";
  202. std::cin >> row1;
  203.  
  204. std::cout << "Wiersz drugi: ";
  205. std::cin >> row2;
  206.  
  207. replaceRows(A, row1, row2);
  208.  
  209. std::cout << "Tablica B: " << std::endl;
  210. printArray(B, N);
  211.  
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement