ChameL1oN

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

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