ChameL1oN

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

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