ChameL1oN

Жесть

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