Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
19.08.2022
Размер:
6.24 Кб
Скачать
#include <iostream>
#include <string>
#include <fstream>
#include <ctime>

using namespace std;

int main(){
    setlocale(LC_ALL, "ru");

    cout << "Вариант №3" << endl;
    cout << "Лабораторная работа №7" << endl;

    srand(time(NULL));
    
    int const SIZE = 10;
    float average = 0.0f;
    int num = 0;

    string path = "Input.txt";
    string path_out = "Output.txt";
    ofstream fout;
    fout.open(path, ofstream::app);

    if (!fout.is_open()){
        cout << "Ошибка открытия файла!";
        return 1;
    }
    else {
        cout << "Желаете ввести последовательность из 10 цифр самостоятельно или сгенерировать?\n\tВведите 0 - если сами введете\n\tВведите 1 - если сгенерировать\n";
        int choice;
        cin >> choice;
        while (cin.fail()) {
        cin.clear();
        cin.ignore(32767, '\n');
        cout << "\nВы ввели не допустимое значение.\nВведите 0 - если сами или 1 - если сгенерировать.";
        cin >> choice;
    }

    if (choice == 0){
        cout << "Вводите целые числа для последовательности от 10 до 30.\n";

        for (int i = 0; i < 10; i++){
            cin >> num;
            while (cin.fail()) {
                cin.clear();
                cin.ignore(32767, '\n');
                cout << "Вы ввели не допустимое значение. Ожидаются цифры от 10 до 30.\n";
                cin >> num;
            }
            while (num < 10 || num > 30){
                cout << "Вы ввели не допустимое значение. Ожидаются цифры от 10 до 30.\n";
                cin >> num;
                while (cin.fail()) {
                    cin.clear();
                    cin.ignore(32767, '\n');
                    cout << "Вы ввели не допустимое значение.\nОжидаются цифры от 10 до 30.\n";
                    cin >> num;
                }
            }
            if (num >= 10 || num <= 30){
                average += num;
                fout << num << "\n";
            }
        }

        average = average / SIZE;
    }
    else if (choice == 1){
        int some = 0;
        cout << "Производится генерация последовательности случайных чисел.\n";
        for (int i = 0; i < 10; i++)
        {
            some = 0;
            some = rand() % 20 + 10;
            average += some;
            fout << some << "\n";
        }
        average = average / SIZE;
    }
    else {
        cout << "Вы ввели недопустимое значение." << endl;
        }
    }
    fout.close();
    cout << "Готово!" << endl;
    cout << "Среднее арифметическое = " << average << endl;


    ifstream fin;
    fin.open(path);
    if (!fin.is_open()){
        cout << "Ошибка открытия файла!" << endl;
        return -1;
    }
    else {
        string ch;
        int n, old, next;

        ofstream file;
        file.open(path_out, ofstream::app);

        if (!file.is_open()){
            cout << "Ошибка открытия файла!";
            return 1;
        }
        else {
            int count = 1;
            cout << "Числа записанные в файл Output.txt:" << endl;
            while (!fin.eof())
            {
                ch = "";
                getline(fin, ch);
                if (ch == "") break;
                count++;
                if (count == 2) {
                    n = stoi(ch);
                    old = n;
                    ch = "";
                    getline(fin, ch);
                    count++;
                    n = stoi(ch);
                    continue;
                }
                next = stoi(ch);
                if (n < (old + next)){
                    file << n << '\n';
                    cout << n << endl;
                }
                old = n;
                n = next;
                if (count == 11){
                    n = old;
                    if (next < n){
                        file << next << '\n';
                        cout << next << endl;
                    }
                }
            }
            fin.close();
            file.close();

            ifstream fin2;
            fin2.open(path_out);
            if (!fin2.is_open()){
                cout << "Ошибка открытия файла!" << endl;
            }
            else{
                string ch;
                int c = 0;

                while (!fin2.eof()){
                    ch = "";
                    getline(fin2, ch);
                    c++;
                }
            fin2.close();

                ifstream fin3;
                fin3.open(path_out);
                if (!fin3.is_open()){
                    cout << "Ошибка открытия файла!" << endl;
                }
                else{
                    string ch;
                    int cnt = 0;
                    int max = 0, b, z;

                    while (!fin3.eof()){
                        ch = "";
                        getline(fin3, ch);
                        cnt++;
                        if (ch == "") break;
                        b = stoi(ch);
                        if (b % 2 == 0){
                            if (max < b){
                                max = b;
                                z = cnt;
                            }
                        }
                        if (cnt == (c - 1) && max == 0){
                        cout << "Четных чисел нет." << endl;
                        }
                        else if (cnt == (c - 1)){
                            cout << "Максимальное четное число - " << max  << ". Его порядковый номер - " << z << endl;
                        }
                }
            }
            fin3.close();
            }
        }
    }

    return 0;
}
Соседние файлы в папке 2 курс - Основы алгоритмизации _ вариант 3