2 лаба. Отчет по лабораторной работе 2 по дисциплине Программирование
Скачать 63.47 Kb.
|
Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Иркутск 2021 г. Задание 1 Условие задачи: Вычисление функции, заданной в виде суммы бесконечного ряда тремя способами в одной программе с использованием оператора выбора: · с заданной погрешностью eps, · с заданным числом k первых членов ряда, · по аналитической формуле f(x) используя математические функции библиотек с++ Введем следующие обозначения: Дано: eps - точность или погрешность, положительное число, меньшее 1. calcOption - вариант вычисления, (1 <= calcOption <= 3). x - аргумент вещественного типа, (0 < x <= 2). Результат: result - сумма ряда (значение функции). Вспомогательные величины: currentSummand - очередное слагаемое. numberOfSummand - номер очередного слагаемого. Математическая модель: Диапазон Таблица 1 - внешние спецификации:
Таблица сообщений: С1.1: “Данного варианты вычисления нет. Введите другое” С1.1: “x не входит в корректный промежуток. Введите ещё раз” С2: result Алгоритмизация: Проектирование тестов: Проверка правильности алгоритма с помощью блок-схемы: Кодирование алгоритма на С++: #include #include using namespace std; int main() { system("chcp 65001"); double long eps, currentSummand = 1, result = 0; int numberOfSummand = 0; int calcOption; while (true) { cout << "Вариант вычисления (1, 2, 3): "; cin >> calcOption; if (calcOption >= 1 and calcOption <= 3) { break; } cout << "Данного варианта вычисления нет. Введите другое" << endl; } float x; while (true) { cout << "Введите число для вычисления (0 < x <= 2): "; cin >> x; if (x > 0 and x <= 2) { break; } cout << "x не входит в корректный промежуток. Введите ещё раз" << endl; } if (x > 0 and x <= 2) { if (calcOption == 1) { cout << "введите погрешность вычисления: "; cin >> eps; while (fabs(currentSummand) > eps) { currentSummand = pow(x - 1, numberOfSummand); if (numberOfSummand % 2 == 0) currentSummand *= -1; result += currentSummand; numberOfSummand += 1; } } else if (calcOption == 2) { cout << "Введите число первых членов последовательности: "; cin >> numberOfSummand; for (int i = 1; i <= numberOfSummand; ++i) { currentSummand = pow(x - 1, i); if (i % 2 == 0) currentSummand *= -1; result += currentSummand; } } else if (calcOption == 3) { result = log(x); } } cout << result << endl; return 0; } |