Advertisement
Temabowl

Untitled

Oct 1st, 2021
15
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. #include <iostream>
  2. #define _USE_MATH_DEFINES
  3. #include <math.h>
  4. #include <cstdlib>
  5. #include <cstdio>
  6. #include <ctime>
  7. #include <iomanip>
  8. #include <vector>
  9. #include <algorithm>
  10. using namespace std;
  11.  
  12.  
  13.  
  14. int Sorting()
  15. {
  16. int size;
  17. size = 100;
  18. vector <int> arr, arr2;
  19. int buffer;
  20. // заполнение массива arr
  21. for (int i = 0; i < size; i++) {
  22. arr.push_back(buffer);
  23. arr[i] = rand() % 100 + 1;
  24. }
  25.  
  26. // заполнение массива arr2
  27. for (int i = 0; i < size; i++) {
  28. arr2.push_back(buffer);
  29. arr2[i] = arr[i];
  30. }
  31.  
  32. // таймер
  33. std::clock_t start;
  34. double duration;
  35. start = std::clock();
  36.  
  37.  
  38. //сортировка пузырьком
  39. int temp;
  40. for (int i = 0; i < size - 1; i++) {
  41. for (int j = 0; j < size - i - 1; j++) {
  42. if (arr[j] > arr[j + 1]) {
  43. temp = arr[j];
  44. arr[j] = arr[j + 1];
  45. arr[j + 1] = temp;
  46. }
  47. }
  48. }
  49. duration = (std::clock() - start); // в тиках
  50. std::cout << "timer: " << duration << " tik\n";
  51.  
  52. // таймер
  53. start = std::clock();
  54.  
  55. //Встроенная сортировка
  56. std::sort(arr2.begin(), arr2.end());
  57.  
  58. duration = (std::clock() - start); // в тиках
  59. std::cout << "timer: " << duration << " tik\n";
  60.  
  61. return 0;
  62. }
  63.  
  64.  
  65.  
  66. int Matrix_multiplication(int sw)
  67. {
  68. int row1, row2, col1, col2;
  69. double** a, ** b, ** c;
  70. if (sw == 1) // Умножение матриц
  71. {
  72. row1 = 100;
  73. row2 = 100;
  74. col1 = 100;
  75. col2 = 100;
  76. }
  77.  
  78. if (sw == 2) // Умножение матрицы на вектор
  79. {
  80. row1 = 1;
  81. col1 = rand() % 100 + 1;
  82. row2 = col1;
  83. col2 = rand() % 100 + 1;
  84.  
  85. }
  86.  
  87.  
  88. std::clock_t start;
  89. double duration;
  90. start = std::clock();
  91.  
  92.  
  93. // эл. первой матрицы. ввод
  94. a = new double* [row1];
  95. for (int i = 0; i < row1; i++)
  96. {
  97. a[i] = new double[col1];
  98. for (int j = 0; j < col1; j++)
  99. {
  100. a[i][j] = rand() % 100 + 1;
  101. }
  102. }
  103. // эл. второй матрицы. ввод
  104. b = new double* [row2];
  105. for (int i = 0; i < row2; i++)
  106. {
  107. b[i] = new double[col2];
  108. for (int j = 0; j < col2; j++)
  109. {
  110. b[i][j] = rand() % 100 + 1;
  111. }
  112. }
  113. // Умножение
  114. c = new double* [row1];
  115. for (int i = 0; i < row1; i++)
  116. {
  117. c[i] = new double[col2];
  118. for (int j = 0; j < col2; j++)
  119. {
  120. c[i][j] = 0;
  121. for (int k = 0; k < col1; k++)
  122. c[i][j] += a[i][k] * b[k][j];
  123. }
  124. }
  125.  
  126. duration = (std::clock() - start) / (double)CLOCKS_PER_SEC;
  127. std::cout << "timer: " << duration << " sec\n";
  128.  
  129. return 0;
  130.  
  131.  
  132. }
  133. int Solve_integral1()
  134. {
  135. double a = 0;
  136. double b = M_PI/2;
  137. int n = 100; // количество точек
  138. double result = 0;
  139.  
  140. cout << setprecision(20);
  141. std::clock_t start;
  142. double duration;
  143. start = std::clock();
  144.  
  145. double h = (b - a) / n;
  146. double c = a + h;
  147.  
  148.  
  149. result += (pow(cos(3 * a), 3) * sin(6 * a));
  150. for (int i = 0; i < n; i++)
  151. {
  152. result += h*(pow(cos(3 * c), 3) * sin(6 * c));
  153. c += h;
  154. }
  155.  
  156. duration = (std::clock() - start); // в тиках
  157. std::cout << "timer: " << duration << " tik\n";
  158. cout << "метод прямоугольников:" << endl;
  159. cout << result << endl;
  160.  
  161.  
  162. start = std::clock();
  163.  
  164. c = a + h;
  165. result = ((pow(cos(3 * a), 3) * sin(6 * a))+
  166. (pow(cos(3 * b), 3) * sin(6 * b)))/2;
  167. for (int i = 0; i < n; i++)
  168. {
  169. result += (pow(cos(3 * c), 3) * sin(6 * c));
  170. c += h;
  171. }
  172. result *= h;
  173. duration = (std::clock() - start); // в тиках
  174. std::cout << "timer: " << duration << " tik\n";
  175. cout << "метод трапеций:" << endl;
  176. cout << result << endl;
  177. cout << setprecision(5);
  178.  
  179.  
  180. return 0;
  181. }
  182.  
  183.  
  184. int main()
  185. {
  186.  
  187. setlocale(LC_ALL, "Russian");
  188.  
  189. cout << "Что будем делать?\n1. Умножение матриц\n2. Умножение вектора на матрицу \n3. Сортировка \n4. Интегралы" << endl;
  190. int choise = 0;
  191. cin >> choise;
  192. if (choise == 1 || choise == 2)
  193. {
  194. Matrix_multiplication(choise);
  195. }
  196. if (choise == 3)
  197. {
  198. Sorting();
  199. }
  200. if (choise == 4)
  201. {
  202. Solve_integral1();
  203. }
  204.  
  205.  
  206.  
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement