ChameL1oN

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

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