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

using namespace std;
int main(){
    setlocale(LC_ALL, "Russian");

    cout << "Вариант №3" << endl;
    cout << "Лабораторная работа №4(1)" << endl;

    double N = 12.0;
    double a = 2.0;
    double x_start = 0.3;
    double x_end = 0.35;
    
    double eps, x, y;
    int i = 1;
    int choice;

    cout << "Выберите вариант цикла для исполнения программы:\n\t1 - цикл с предусловием\n\t2 - цикл с постусловием\n";
    cin >> choice;
    while ((choice <= 0 || choice > 2) || cin.fail()) 
    {
        cin.clear();
        cin.ignore(32767, '\n');
        cout << "\nВы ввели не допустимое значение.\n1 или 2?: ";
        cin >> choice;
    }
    cout << "\nВыберите значение для переменной эпсилон, бесконечно малое число больше 0: ";
    cin >> eps;
    while (eps <= 0 || cin.fail()) {
        cin.clear();
        cin.ignore(32767, '\n');
        cout << "\nВы ввели не допустимое значение.\nВведите любое бесконечно малое число больше 0: ";
        cin >> eps;
    }
    x = x_start + eps;
    cout << endl;
    
    switch (choice)
    {
        case 1:
        {
            cout << "Выполняется цикл с предусловием.\n" << endl;
            if (x > x_end) 
            {
                cout << "Вы ввели слишком большое число. Попробуйте 0.001, например.\nПроисходит завершение работы программы ..." << endl;
                return 0;
            }
            while (i <= N)
            {
                if (i == 1) cout << "Таблица вычислений\n" << endl;
                cout << "Итерация " << i << '\t';
                cout << "x = " << x << '\t';
                y = (tan(a*x) - pow(x, 2)) / (2 + pow(a, 2));
                cout << "Значение функции f(x) = " << y << endl;
                x += eps;
                i++;
                if (x > x_end)
                {
                    cout << "Дальнейшее вычисление не возможно, значение функции выходит за предел установленный заданием." << endl;
                    break;
                }
            }
            break;
        }
        case 2:
        {
            cout << "Выполняется цикл с постусловием.\n" << endl;
            do{
                if (x > x_end && i == 1) 
                {
                    cout << "Вы ввели слишком большое число. Попробуйте 0.001, например.\nПроисходит завершение работы программы ..." << endl;
                    return 0;
                }
                else
                {
                    if (i == 1) cout << "Таблица вычислений\n" << endl;
                    cout << "Итерация " << i << '\t';
                    cout << "x = " << x << '\t';
                    y = (tan(a*x) - pow(x, 2)) / (2 + pow(a, 2));
                    cout << "Значение функции f(x) = " << y << endl;
                    x += eps;
                    i++;
                    if (x > x_end)
                    {
                        cout << "Дальнейшее вычисление не возможно, значение функции выходит за предел установленный заданием." << endl;
                        break;
                    }
                }
            }
            while (i <= N);
        }
    }
    
    return 0;
}
Соседние файлы в папке 2 курс - Основы алгоритмизации _ вариант 3