Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <locale>
- using namespace std;
- // Удалить все равные максимальному элементы
- // Добавить К элементов в конец массива
- // Сдвиг влево
- // Найти первый отрицательный
- // Отсортировать методом Шейкера по убыванию
- int DeleteMax(int w){
- ofstream f;
- ifstream F;
- F.open("Output.txt", ios::in);
- f.open("Delete.txt");
- int i = 0, k = 0, max = 0;
- cout << endl;
- cout << "ФУНКЦИЯ УДАЛЕНИЯ ИЗ МАССИВА :" << endl;
- int* mass = new int[w];
- while (i < w){
- F >> mass[i];
- if (mass[i] > max){
- max = mass[i];
- }
- i++;
- }
- i = 0;
- cout << "Массив , после удаления максимальных элементов : " << endl;
- while (k < w){
- if (mass[k] != max){
- cout << "mass[" << i << "] = " << mass[k] << endl;
- f << mass[k] << endl;
- i++;
- }
- k++;
- }
- cout << "Результат операции так же записан в файл Delete.txt" << endl;
- f.close();
- return i; //Возвращаем оставшееся кол-во элементов
- }
- int Add(int k){
- // К элементов в конец массива(что вставлять запрашивать у пользователя)
- int K, a = -1, i = 0;
- ifstream F;
- ofstream f;
- f.open("Add.txt");
- F.open("Delete.txt", ios::in);
- cout << endl;
- cout << "ФУНКЦИЯ ДОБАВЛЕНИЯ ЭЛЕМЕНТОВ В МАССИВ :" << endl;
- cout << "Введите кол-во добавляемых элементов" << endl;
- cin >> K;
- int *Dobavmass = new int[k + K];
- while (i < k) {
- F >> Dobavmass[i];
- i++;
- }
- while (i < k + K){
- cout << "Введите элемент " << i << endl;
- cin >> Dobavmass[i];
- i++;
- }
- i = 0;
- cout << "Массив после добавления К элементов :" << endl;
- while (i < k + K){
- cout << "mass[" << i << "] = " << Dobavmass[i] << endl;
- f << Dobavmass[i] << endl;
- i++;
- }
- cout << "Результат операции так же записан в файл Add.txt" << endl;
- f.close();
- F.close();
- return k + K; //Возращаем новое кол-во элементов
- }
- void Sdvig(int k){
- int a=0,i=0,j=0,tmp,M,r=0;
- ifstream F;
- ofstream f;
- f.open("Sdvig.txt");
- F.open("Add.txt", ios::in);
- int *mass = new int[k];
- cout << endl;
- cout << "ФУНКЦИЯ СДВИГА ЭЛЕМЕНТОВ МАССИВА :" << endl;
- for (int i = 0; i < k; i++) {
- // Заполнение массива
- F >> mass[i];
- }
- cout << "Введите число сдвигов : ";
- cin >> M;
- // Перестановка
- for (i = 0; i < M; i++)
- {
- r = mass[0];
- for (int i = 0; i<k - 1; i++)
- mass[i] = mass[i + 1];
- mass[k - 1] = r;
- }
- cout << endl;
- a = 0;
- while (a < k){ //Выводим
- cout << "mass[" << a << "] = " << mass[a] << endl;
- f << mass[a] << endl;
- a++;
- }
- cout << "Результат операции так же записан в файл Sdvig.txt" << endl;
- F.close();
- f.close();
- }
- void Find(int k){
- int a = -1, num = 0, b = 0, mid = 0; // Кол-во сравнений будет равно a+1
- ifstream F;
- ofstream f;
- f.open("Find.txt");
- F.open("Sdvig.txt", ios::in);
- cout << endl;
- cout << "ФУНКЦИЯ ПОИСКА ПЕРВОГО ОТРИЦАТЕЛЬНОГО ЭЛЕМЕНТА : " << endl;
- num = 0;
- while (a<k && num == 0){
- F >> b;
- a++;
- if (b < 0){
- num = b;
- }
- }
- F.close();
- if (num != 0){
- cout << "Первый отрицательный элемент равен : " << num << " Его порядковый номер : " << a << endl;
- cout << endl << "Кол-во сравнений равно порядковому номеру+1 : " << a + 1 << endl;
- f << "Первый отрицательный элемент равен : " << num << " Его порядковый номер " << a << endl;
- f << "Кол-во сравнений равно порядковому номеру+1 : " << a + 1 << endl;
- }
- else{
- cout << "Отрицательного элемента не найдено";
- f << "Отрицательного элемента не найдено";
- }
- cout << endl << "Результат операции так же записан в файл Find.txt" << endl;
- f.close();
- }
- void Shaker_Sort(int count)
- {
- int i, left, right, b;
- double t;
- int x;
- ifstream F;
- ofstream f;
- f.open("Sort.txt");
- F.open("Sdvig.txt", ios::in);
- cout << endl;
- cout << "ФУНКЦИЯ СОРТИРОВКИ :" << endl;
- int *mass = new int[count];
- for (int i = 0; i < count; i++){
- F >> mass[i];
- }
- for (right = count - 1, left = 0, b = -1; b != 0;)//устанавливаем правую и левую границу
- {
- b = 0;
- for (i = left; i< right; i++)//двигаемся слева направо
- {
- if (mass[i] < mass[i + 1])
- {
- t = mass[i]; mass[i] = mass[i + 1]; mass[i + 1] = t; b = i;
- }
- }
- right = b;
- for (i = right; i> left; i--)//двигаемся справа налево
- {
- if (mass[i - 1] < mass[i])
- {
- t = mass[i]; mass[i] = mass[i - 1]; mass[i - 1] = t; b = i;
- }
- }
- left = b;
- }
- i = 0;
- while (i < count){
- cout << "mass[" << i << "] = " << mass[i] << endl;
- f << mass[i] << endl;
- i++;
- }
- cout << "Результат операции так же записан в файл Sort.txt" << endl;
- F.close();
- f.close();
- }
- void form_matr(int n)
- {
- ifstream F;
- F.open("output.txt", ios::in);
- int* massive = new int[n]; // Выделение памяти для массива
- for (int i = 0; i < n; i++) {
- // Заполнение массива и вывод значений его элементов
- F >> massive[i];
- cout << "Value of " << i << " element is " << massive[i] << endl;
- }
- F.close();;
- }
- void main()
- {
- setlocale(LC_ALL, "rus");
- int num, max = 0; // num - размер массива
- cout << "Введите кол-во элементов в массиве :" << endl;
- cin >> num;
- form_matr(num);
- num = DeleteMax(num); // Удаляем все нечётные элементы
- num = Add(num); // Вставить К после чётных
- Sdvig(num); // Сдвинуть циклически
- Find(num); // Элемент , равный среднему арифметическому
- Shaker_Sort(num); // Простой обмен по убыванию
- }
Advertisement
Add Comment
Please, Sign In to add comment