Advertisement
Guest User

Иоан

a guest
Mar 26th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <windows.h>
  4. #include <conio.h>
  5. #include <iostream>
  6. #include <stdlib.h>
  7. #include <iomanip>
  8. using namespace std;
  9.  
  10. char ch;
  11. int i2, j, k1, k2;
  12. const int MAX_SIZE = 100;
  13. int n, m;
  14. double arr[MAX_SIZE];
  15. int top;
  16.  
  17. int menu_main()
  18. {
  19. HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  20. char key = 0;
  21. int code;
  22. do {
  23. system("cls");
  24. printf(" *********************************************\n");
  25. printf(" * Лабораторная работа №2 *\n");
  26. printf(" * Одномерные и *\n");
  27. printf(" * двумерные массивы *\n");
  28. printf(" * Вариант №20 *\n");
  29. printf(" * Группа KM-63 Вовченко И.В. *\n");
  30. printf(" *********************************************\n");
  31. printf("\n");
  32. key = (key + 7) % 7;
  33. SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 8));
  34. printf("ИНСТРУКЦИЯ!!! ДЛЯ НАВИГАЦИИ ПО МЕНЮ ИСПОЛЬЗУЙТЕ СТРЕЛКИ ВВЕРХ, ВНИЗ И КЛАВИШУ ENTER\n");
  35. printf("1. Дано одномерный массив A, состоящий из n элементов. \n");
  36. printf(" Определить сколько значений в масиве \n");
  37. printf(" встречается по 3 раза.\n");
  38. SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 15));
  39. if (key == 0) cout << " -> Ввод с клавиатуры. " << endl;
  40. else cout << " Ввод с клавиатуры." << endl;
  41. if (key == 1) cout << " -> Заполнение массива с помощью генератора случайных чисел.\n" << endl;
  42. else cout << " Заполнение массива с помощью генератора случайных чисел.\n" << endl;
  43. SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 8));
  44. printf("2. Сортировать массив методом линейной вставки \n");
  45. SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 15));
  46. if (key == 2) cout << " -> Ввод с клавиатуры." << endl;
  47. else cout << " Ввод с клавиатуры." << endl;
  48. if (key == 3) cout << " -> Заполнение массива с помощью генератора случайных чисел.\n" << endl;
  49. else cout << " Заполнение массива с помощью генератора случайных чисел.\n" << endl;
  50. SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 8));
  51. printf("3. Для матрицы из действительных чисел.\n");
  52. printf(" Найти максимальный и минимальный элемент и\n");
  53. printf(" суму элементов между ними.\n");
  54. SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 15));
  55. if (key == 4) cout << " -> Ввод с клавиатуры." << endl;
  56. else cout << " Ввод с клавиатуры." << endl;
  57. if (key == 5) cout << " -> Заполнение массива с помощью генератора случайных чисел.\n\n" << endl;
  58. else cout << " Заполнение массива с помощью генератора случайных чисел.\n\n" << endl;
  59. if (key == 6) cout << " -> Выход." << endl;
  60. else cout << " Выход." << endl;
  61. code = _getch();
  62. if (code == 224)
  63. {
  64. code = _getch();
  65. if (code == 80) key++;
  66. if (code == 72) key--;
  67. }
  68. } while (code != 13);
  69. system("cls");
  70. return key;
  71. }
  72.  
  73. void task_1(int i)
  74. {
  75. double max = 0;
  76. do
  77. {
  78. system("cls");
  79. cout << "Введите размерность массива(максимум - 100) : ";
  80. rewind(stdin);
  81. scanf("%d", &n);
  82. cout << "\n";
  83. } while (n<1 || n>100);
  84. cout << "Вводите числовые значения!\n";
  85. if (i == 1)
  86. for (int i = 0; i < n; i++)
  87. {
  88. cout << "arr[" << i << "] = ";
  89. cin >> arr[i];
  90. }
  91. if (i == 2)
  92. {
  93. cout << "Введите максимальный и минимальный предел функции random :";
  94. rewind(stdin);
  95. scanf("%d", &top);
  96. for (int i = 0; i < n; i++)
  97. {
  98. arr[i] = ((rand() % (20 * top + 1)) - top * 10) / 10.0;
  99. cout << "arr[" << i << "] = " << arr[i] << endl;
  100. }
  101.  
  102. }
  103. cout << "\nПолученный массив :\n";
  104. for (int i = 0; i < n; i++)
  105. {
  106. cout << arr[i] << " ";
  107. }
  108. cout << "\n\n";
  109. /*
  110. int imax = 0;
  111. for (int i = 0; i < n; i++)
  112. if (arr[i] > arr[imax])
  113. {
  114. imax = i;
  115. }
  116. cout << "Индекс максимального элемента = " << imax;
  117. cout << "\n";
  118. //return 0;
  119. for (int i = 0; i < n; i++)
  120. if (fabs(arr[i]) > max)
  121. {
  122. max = fabs(arr[i]);
  123. }
  124. cout << "Максимальный элемент массива по модулю = " << max;
  125. cout << "\n";
  126. system("pause");*/
  127. int count = 0;
  128. int temp = 0;
  129. for (int i = 0; i<n; i++) {
  130. temp = 0;
  131. for (int j = 0; j<n; j++) {
  132. if (arr[i] == arr[j]) {
  133. temp++;
  134. }
  135. }
  136. if (temp == 3) {
  137. count++;
  138. }
  139.  
  140. }
  141. cout << count / 3;
  142. printf("\n\n");
  143. system("pause");
  144.  
  145. //return count / 3;
  146.  
  147. }
  148.  
  149.  
  150. void Sort(double* mass, int n) {
  151. for (int i = 1; i<n; i++) {
  152. for (int j = i; j>0 && mass[j - 1]>mass[j]; j--) {
  153. int tmp = mass[j - 1];
  154. mass[j - 1] = mass[j];
  155. mass[j] = tmp;
  156. }
  157. }
  158. }
  159.  
  160.  
  161. void task_2(int i)
  162. {
  163. do
  164. {
  165. system("cls");
  166. cout << "Введите размерность массива(максимум - 100) : ";
  167. rewind(stdin);
  168. scanf("%d", &n);
  169. cout << "\n";
  170. } while (n<1 || n>100);
  171. cout << "Вводите числовые значения!\n";
  172. if (i == 1)
  173. for (int i = 0; i < n; i++)
  174. {
  175. cout << "arr[" << i << "] = ";
  176. cin >> arr[i];
  177. }
  178. if (i == 2)
  179. {
  180. cout << "Введите максимальный и минимальный предел функции random :";
  181. rewind(stdin);
  182. scanf("%d", &top);
  183. for (int i = 0; i < n; i++)
  184. {
  185. arr[i] = ((rand() % (20 * top + 1)) - top * 10) / 10.0;
  186. cout << "arr[" << i << "] = " << arr[i] << endl;
  187. }
  188.  
  189. }
  190. cout << "\nПолученный массив :\n";
  191. for (int i = 0; i < n; i++)
  192. {
  193. cout << arr[i] << " ";
  194. }
  195. Sort(arr, n);
  196. cout << "\nОтсортированный массив :\n";
  197. for (int i = 0; i < n; i++)
  198. {
  199. cout << arr[i] << " ";
  200. }
  201. cout << endl;
  202. system("pause");
  203. }
  204.  
  205. void task_3(int i)
  206. {
  207. double arr[100][100];
  208. int imax = 0;
  209. int jmax = 0;
  210. int imin = 0;
  211. int jmin = 0;
  212. int max_value = arr[0][0];
  213. int min_value = arr[0][0];
  214. double sum = 0;
  215.  
  216. system("cls");
  217. printf("массив с 3 столбиками и 10 строками\n\n");
  218. cout << "Вводите числовые значения!\n";
  219. cout << "Matrix size(NxM)\n";
  220. cout << "N= ";
  221. cin >> n;
  222. cout << "M= ";
  223. cin >> m;
  224. if (i == 1)
  225. for (int i = 0; i < n; i++)
  226. for (int j = 0; j < m; j++)
  227. {
  228. cout << "arr[" << i << "]" << " " << "[" << j << "]" << " = ";
  229. cin >> arr[i][j];
  230. }
  231. if (i == 2)
  232. {
  233. cout << "Введите максимальный и минимальный предел функции random :";
  234. rewind(stdin);
  235. scanf("%d", &top);
  236. for (int i = 0; i < n; i++)
  237. for (int j = 0; j < m; j++)
  238. {
  239. arr[i][j] = ((rand() % (20 * top + 1)) - top * 10) / 10.0;
  240. //cout << "arr[" << i << "]"<<"["<<j<<"]"<<" = " << arr[i][j] << endl;
  241. }
  242. }
  243.  
  244. cout << "\nПолученный массив : \n";
  245.  
  246. for (int i = 0; i < n; i++)
  247. {
  248. for (int j = 0; j < m; j++)
  249. {
  250. cout << setw(10) << arr[i][j];
  251. }
  252. cout << "\n";
  253. }
  254. for (int i = 0; i<n; i++)
  255. {
  256. for (int j = 0; j<m; j++)
  257. {
  258. if (arr[i][j] < min_value)
  259. {
  260. min_value = arr[i][j];
  261. imin = i;
  262. jmin = j;
  263. }
  264. if (arr[i][j] > max_value)
  265. {
  266. max_value = arr[i][j];
  267. imax = i;
  268. jmax = j;
  269. }
  270. }
  271. }
  272.  
  273. bool need_break = false;
  274.  
  275. if (imin > imax)
  276. {
  277. if (jmin > jmax)
  278. {
  279. for (int i = imax; i < n; i++)
  280. {
  281. for (int j = jmax; j < m; j++)
  282. {
  283. if (i == imin && j == jmin)
  284. {
  285. need_break = true;
  286. break;
  287. }
  288. else
  289. {
  290. sum = sum + arr[i][j];
  291. }
  292. }
  293.  
  294. if (need_break == true)
  295. {
  296. break;
  297. }
  298. }
  299.  
  300. sum = sum - arr[imax][jmax];
  301. }
  302. else
  303. {
  304. for (int i = imax; i < n; i++)
  305. {
  306. for (int j = jmin; j < m; j++)
  307. {
  308. if (i == imin && j == jmax)
  309. {
  310. need_break = true;
  311. break;
  312. }
  313. else
  314. {
  315. sum = sum + arr[i][j];
  316. }
  317. }
  318.  
  319. if (need_break == true)
  320. {
  321. break;
  322. }
  323. }
  324.  
  325. sum = sum - arr[imax][jmin];
  326. }
  327. }
  328. else
  329. {
  330. if (jmin > jmax)
  331. {
  332. for (int i = imin; i < n; i++)
  333. {
  334. for (int j = jmax; j < m; j++)
  335. {
  336. if (i == imax && j == jmin)
  337. {
  338. need_break = true;
  339. break;
  340. }
  341. else
  342. {
  343. sum = sum + arr[i][j];
  344. }
  345. }
  346.  
  347. if (need_break == true)
  348. {
  349. break;
  350. }
  351. }
  352.  
  353. sum = sum - arr[imin][jmax];
  354. }
  355. else
  356. {
  357. for (int i = imin; i < n; i++)
  358. {
  359. for (int j = jmin; j < m; j++)
  360. {
  361. if (i == imax && j == jmax)
  362. {
  363. need_break = true;
  364. break;
  365. }
  366. else
  367. {
  368. sum = sum + arr[i][j];
  369. }
  370. }
  371.  
  372. if (need_break == true)
  373. {
  374. break;
  375. }
  376. }
  377.  
  378. sum = sum - arr[imin][jmin];
  379. //cout << sum;
  380. }
  381. }
  382. cout <<"suma: " <<sum << endl;
  383. system("pause");
  384. }
  385.  
  386. int main()
  387. {
  388. while (1)
  389. {
  390. setlocale(LC_ALL, "RUS");
  391. int i1 = menu_main() + 1;
  392. switch (i1)
  393. {
  394. case 1: {task_1(1); break; }
  395. case 2: {task_1(2); break; }
  396. case 3: {task_2(1); break; }
  397. case 4: {task_2(2); break; }
  398. case 5: {task_3(1); break; }
  399. case 6: {task_3(2); break; }
  400. case 7: {return 0; }
  401. }
  402. }
  403. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement