Главная страница
Навигация по странице:

  • Задание 1 Условие задачи

  • Математическая модель: Диапазон Таблица 1 - внешние спецификации

  • Алгоритмизация

  • >_calcOption;_if_(calcOption_>=_1_and_calcOption_3_)_{_break">"Вариант вычисления (1, 2, 3): " ; cin >> calcOption; if (calcOption >= 1 and calcOption 3 ) { break

  • _0_and_x_2_)_{_if">"x не входит в корректный промежуток. Введите ещё раз" endl; } if (x > 0 and x 2 ) { if

  • (fabs(currentSummand) > eps) { currentSummand = pow(x - 1 , numberOfSummand); if (numberOfSummand % 2 == 0 )

  • >_numberOfSummand;">(calcOption == 2 ) { cout "Введите число первых членов последовательности: " ; cin >> numberOfSummand;

  • 2 лаба. Отчет по лабораторной работе 2 по дисциплине Программирование


    Скачать 63.47 Kb.
    НазваниеОтчет по лабораторной работе 2 по дисциплине Программирование
    Дата28.11.2021
    Размер63.47 Kb.
    Формат файлаdocx
    Имя файла2 лаба.docx
    ТипОтчет
    #284640

    Министерство науки и высшего образования Российской Федерации

    Федеральное государственное бюджетное образовательное учреждение
    высшего образования

    ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

    Институт информационных технологий и анализа данных

    наименование института







    Отчет

    по лабораторной работе № 2
    по дисциплине «Программирование»

    «Циклический вычислительный процесс»

    наименование темы

    Вариант №7



    Выполнил студент




    АСУб-21-2










    Д.А. Жилкин







    шифр




    подпись




    И.О. Фамилия

    Проверил
















    А.Б. Столбов













    подпись




    И.О. Фамилия

    Работа защищена с оценкой




    Иркутск 2021 г.

    Задание 1


    • Условие задачи:

    Вычисление функции, заданной в виде суммы бесконечного ряда тремя способами в одной программе с использованием оператора выбора:

    · с заданной погрешностью eps,

    · с заданным числом k первых членов ряда,

    · по аналитической формуле f(x) используя математические функции библиотек с++

    Введем следующие обозначения:

    Дано:

    1. eps - точность или погрешность, положительное число, меньшее 1.

    2. calcOption - вариант вычисления, (1 <= calcOption <= 3).

    3. x - аргумент вещественного типа, (0 < x <= 2).


    Результат:

    1. result - сумма ряда (значение функции).


    Вспомогательные величины:

    1. currentSummand - очередное слагаемое.

    2. numberOfSummand - номер очередного слагаемого.




    • Математическая модель:

    Диапазон

    • Таблица 1 - внешние спецификации:



    Имя

    Назначение

    Тип

    Вх/Вых

    Диапазон

    1

    eps

    точность или погрешность, положительное число

    Вещ.

    число

    Вход

    [0; 1)

    2

    calcOption

    вариант вычисления

    Цел.

    число

    Вход

    [1; 3]

    3

    x

    аргумент вещественного типа

    Вещ.

    число

    Вход

    (0; 2]

    4

    result

    сумма ряда (значение функции)

    Вещ.

    число

    Выход

    (-3.4e10^38; 3.4e10^38)


    5

    С1.1

    сообщение

    Текст

    Выход

    1 вид

    6

    С1.2

    сообщение

    Текст

    Выход

    1 вид

    7

    С2

    сообщение

    Текст

    Выход

    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;

    }


    написать администратору сайта