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("Vvod.txt", ios::in);
- f.open("Func1.txt");
- int i=0,k=0,max=0;
- int* mass = new int[w];
- while (i < w){
- F >> mass[i];
- if (mass[i] > max){
- max = mass[i];
- }
- i++;
- }
- cout << "max = " << max << endl;
- k = 0;
- while (k < w){
- if (mass[k] == max){ //Когда найдём - начинаем сдвиг всего массива влево , начиная с найденного
- i = k;
- while (i < w - 1){
- mass[i] = mass[i + 1];
- i++;
- }
- w--; //справа будет кол-во максимальных чисел равно кол-во найденных, для этого мы обрезаем
- }
- k++;
- }
- i = 0;
- while (i < w){ //И записываем массив в файл , но он уже меньше как минимум на 1 элемент
- f << mass[i] << endl;
- i++;
- }
- f.close();
- return w; //Возвращаем оставшееся кол-во элементов
- }
- int Dobavka(int k){
- // К элементов в начало массива(что вставлять запрашивать у пользователя)
- int K, a = -1,i=0;
- ifstream F;
- ofstream f;
- f.open("Func2.txt");
- F.open("Func1.txt", ios::in);
- cout << "Введите кол-во добавляемых элементов" << endl;
- cin >> K;
- int *Dobavmass = new int[k + K];
- while(i < K) {
- cout << "Введите элемент " << i << endl;
- cin >> Dobavmass[i];
- i++;
- }
- while (i < k + K){
- F >> Dobavmass[i];
- i++;
- }
- i = 0;
- while (i < k + K){
- f << Dobavmass[i] << endl;
- i++;
- }
- f.close();
- F.close();
- return k + K; //Возращаем новое кол-во элементов
- }
- void Perevorot(int k){
- int a;
- ifstream F;
- ofstream f;
- f.open("Func3.txt");
- F.open("Func2.txt", ios::in);
- int *mass = new int[k];
- for (int i = 0; i < k; i++) {
- // Заполнение массива и вывод значений его элементов
- F >> mass[i];
- }
- a = 0;
- while (a < k/2){ // Переворачиваем
- int r;
- r = mass[a];
- mass[a] = mass[k- 1 - a];
- mass[k - 1 - a] = r;
- a++;
- }
- cout << endl;
- a = 0;
- while (a < k){ //Выводим
- f << mass[a] << endl;
- a++;
- }
- F.close();
- f.close();
- }
- void Find(int k){
- int a = -1, num=0, b; // Кол-во сравнений будет равно a+1
- ifstream F;
- ofstream f;
- f.open("Func4.txt");
- F.open("Func3.txt", ios::in);
- while (a<k && num == 0){
- F >> b;
- a++;
- if (b % 2 == 0){
- num = b;
- }
- }
- F.close();
- f << "Первый чётный элемент равен " << num << " Его порядковый номер " << a << endl;
- f.close();
- }
- void Obmen(int k){
- int a = -1;
- ifstream F;
- ofstream f;
- f.open("Func5.txt");
- F.open("Func3.txt", ios::in);
- int *mass = new int[k];
- for (int i = 0; i < k; i++){
- F >> mass[i];
- }
- for (int i = 1; i<k; i++)
- for (int a = k - 1; a >= i; a--)
- if (mass[a]<mass[a - 1])
- {
- int r = mass[a];
- mass[a] = mass[a-1];
- mass[a-1] = r;
- }
- a = 0;
- while (a < k){
- f << mass[a] << endl;
- a++;
- }
- F.close();
- f.close();
- }
- void form_matr(int n)
- {
- ifstream F;
- F.open("Vvod.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 << "Введите кол-во элементов в массиве";
- cin >> num;
- form_matr(num);
- num = DeleteMax(num); // Удаляем максимальные и получаем новое кол-во элементов в последовательности
- num = Dobavka(num); // Добавить К элементов в начало массива и получить новое кол-во элементов в последовательности
- Perevorot(num); // Перевернуть массив
- Find(num); // Найти первый чётный
- Obmen(num); // Простой обмен по возрастанию
- }
Advertisement
Add Comment
Please, Sign In to add comment