ChameL1oN

Лаба4_Вариант16

Dec 14th, 2014
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.01 KB | None | 0 0
  1. (j #include <iostream>
  2. #include <fstream>
  3. #include <locale>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. // Удалить все нечётные элементы
  9. // Добавить К после всех чётных
  10. // Сдвиг вправо
  11. // Найти равный среднему арифметическому
  12. // Отсортировать методом простого обмена по убыванию
  13.  
  14. int Delete(int w){
  15. ofstream f;
  16. ifstream F;
  17. F.open("output.txt", ios::in);
  18. f.open("Delete.txt");
  19. int i = 0, k = 0, max = 0, K;
  20. cout << endl;
  21. cout << "ФУНКЦИЯ УДАЛЕНИЯ ИЗ МАССИВА :" << endl;
  22. int* mass = new int[w];
  23. cout << endl;
  24. while (k < w){
  25. F >> mass[k];
  26. if (mass[k] % 2 == 0){
  27. cout << "mass[" << i << "] = " << mass[k] << endl;
  28. f << mass[k] << endl;
  29. i++;
  30. }
  31. k++;
  32. }
  33. cout << "Результат операции так же записан в файл Delete.txt" << endl;
  34. f.close();
  35. return i; //Возвращаем остаток
  36. }
  37. int Dobavka(int k){
  38.  
  39. // N Элемент перед элементами , равными K
  40. int K, a = -1, i = 0, N, j = 1;
  41. ifstream F;
  42. ofstream f;
  43. f.open("Add.txt");
  44. F.open("Delete.txt", ios::in);
  45. cout << endl;
  46. cout << "ФУНКЦИЯ ДОБАВЛЕНИЯ ЭЛЕМЕНТОВ В МАССИВ :" << endl;
  47. cout << "Введите элемент N " << endl;
  48. cin >> K;
  49. int *mass = new int[k * 2];
  50. while (i < k * 2){
  51. F >> mass[i];
  52. mass[i + 1] = K;
  53. i += 2;
  54. }
  55. i = 0;
  56. cout << "Массив после добавления К элементов :" << endl;
  57. while (i < k * 2){
  58. cout << "mass[" << i << "] = " << mass[i] << endl;
  59. f << mass[i] << endl;
  60. i++;
  61. }
  62. cout << "Результат операции так же записан в файл Add.txt" << endl;
  63. f.close();
  64. F.close();
  65. return k * 2; //Возращаем новое кол-во элементов
  66. }
  67. void Sdvig(int k){
  68. int a = 0, i = 0, j = 0, tmp, M;
  69. ifstream F;
  70. ofstream f;
  71. f.open("Move.txt");
  72. F.open("Add.txt", ios::in);
  73. int *mass = new int[k];
  74. cout << endl;
  75. cout << "ФУНКЦИЯ СДВИГА ЭЛЕМЕНТОВ МАССИВА :" << endl;
  76. for (int i = 0; i < k; i++) {
  77. // Заполнение массива и вывод значений его элементов
  78. F >> mass[i];
  79. }
  80. cout << "Введите число сдвигов : ";
  81. cin >> M;
  82.  
  83. // Перестановка
  84. for (i = 0; i<M; i++)
  85. {
  86. for (j = k - 1; j >= 0; j--)
  87. if (j == k - 1)
  88. tmp = mass[k - 1];
  89. else
  90. mass[j + 1] = mass[j];
  91. mass[0] = tmp;
  92. }
  93.  
  94. cout << endl;
  95. a = 0;
  96. while (a < k){ //Выводим
  97. cout << "mass[" << a << "] = " << mass[a] << endl;
  98. f << mass[a] << endl;
  99. a++;
  100. }
  101. cout << "Результат операции так же записан в файл Move.txt" << endl;
  102. F.close();
  103. f.close();
  104. }
  105. void Find(int k){
  106. int a = -1, num = 0, b = 0, mid = 0; // Кол-во сравнений будет равно a+1
  107. ifstream F;
  108. ofstream f;
  109. f.open("Find.txt");
  110. F.open("Move.txt", ios::in);
  111. cout << endl;
  112. cout << "ФУНКЦИЯ ПОИСКА ЭЛЕМЕНТА РАВНОГО СРЕДНЕМУ АРИФМЕТИЧЕСКОМУ :" << endl;
  113. while (b < k){
  114. F >> num;
  115. mid += num;
  116. b++;
  117. }
  118. mid /= b;
  119. num = 0;
  120. cout << "Среднее арифметическое равно : " << mid << endl;
  121. while (a<k && num == 0){
  122. F >> b;
  123. a++;
  124. if (b == mid){
  125. num = b;
  126. }
  127. }
  128. F.close();
  129. if (num != 0){
  130. cout << "Элемент равный среднему арифметическому : " << num << " Его порядковый номер : " << a << endl;
  131. cout << endl << "Кол-во сравнений равно порядковому номеру+1 : " << a + 1 << endl;
  132. f << "Элемент равный среднему арифметическому : " << num << " Его порядковый номер " << a << endl;
  133. f << "Кол-во сравнений равно порядковому номеру+1 : " << a + 1 << endl;
  134. }
  135. else{
  136. cout << "Элемента , равного среднему арифметическому не найдено";
  137. f << "Элемента , равного среднему арифметическому не найдено";
  138. }
  139.  
  140.  
  141. cout << endl << "Результат операции так же записан в файл Find.txt" << endl;
  142. f.close();
  143. }
  144.  
  145. void Obmen(int k){
  146. int i = 0, min, n_min, j, a = -1;
  147. ifstream F;
  148. ofstream f;
  149. f.open("Obmen.txt");
  150. F.open("Move.txt", ios::in);
  151. cout << endl;
  152. cout << "ФУНКЦИЯ СОРТИРОВКИ :" << endl;
  153. int *mass = new int[k];
  154.  
  155. for (int i = 0; i < k; i++){
  156. F >> mass[i];
  157. }
  158. for (int i = 1; i<k; i++)
  159. for (int a = k - 1; a >= i; a--)
  160. if (mass[a]>mass[a - 1])
  161. {
  162. int r = mass[a];
  163. mass[a] = mass[a - 1];
  164. mass[a - 1] = r;
  165. }
  166. a = 0;
  167. while (a < k){
  168. cout << "mass[" << a << "] = " << mass[a] << endl;
  169. f << mass[a] << endl;
  170. a++;
  171. }
  172. cout << "Результат операции так же записан в файл Obmen.txt" << endl;
  173. F.close();
  174. f.close();
  175. }
  176. void form_matr(int n)
  177. {
  178. ifstream F;
  179. F.open("output.txt", ios::in);
  180.  
  181. int* massive = new int[n]; // Выделение памяти для массива
  182. for (int i = 0; i < n; i++) {
  183. // Заполнение массива и вывод значений его элементов
  184. F >> massive[i];
  185. cout << "Value of " << i << " element is " << massive[i] << endl;
  186. }
  187. F.close();;
  188. }
  189. void main()
  190. {
  191. setlocale(LC_ALL, "rus");
  192. int num, max = 0; // num - размер массива
  193. cout << "Введите кол-во элементов в массиве :" << endl;
  194. cin >> num;
  195. form_matr(num);
  196. num = Delete(num); // Удаляем все нечётные элементы
  197. num = Dobavka(num); // Вставить К после чётных
  198. Sdvig(num); // Сдвинуть циклически
  199. Find(num); // Элемент , равный среднему арифметическому
  200. Obmen(num); // Простой обмен по убыванию
  201. }
Advertisement
Add Comment
Please, Sign In to add comment