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

  • 1.Задание на разработку проекта и вариант задания Создать приложение (решение), состоящее из трех проектов с именем Lab7 в соответствии с общим заданием для вычисления функции с условием l

  • Рисунок 2- Схема алгоритма главной функции main()

  • Рисунок 3 - Схемы алгоритмов функций Get ABXY и Put PN Схема Razv() (Рисунок 4 )

  • Рисунок 4-схема функции Razv()

  • Файл с вводом и выводом: //

  • Файл без доп. функций мин. и макс и c доп. функций мин. и макс: //

  • Рисунок 6- Консольная отладка для 3 проекта 5.Доказательство правильности работы программы

  • лаба 7.2 вариант 24. Программирование алгоритмов вложенных циклических структур


    Скачать 137.81 Kb.
    НазваниеПрограммирование алгоритмов вложенных циклических структур
    Дата10.12.2021
    Размер137.81 Kb.
    Формат файлаdocx
    Имя файлалаба 7.2 вариант 24.docx
    ТипЛабораторная работа
    #299258

    Федеральное агентство связи

    Ордена Трудового Красного Знамени федеральное государственное бюджетное

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

    «Московский технический университет связи и информатики»
    Кафедра информатики

    ЛАБОРАТОРНАЯ РАБОТА № 7.2

    по дисциплине “Информатика”

    на тему

    «Программирование алгоритмов вложенных циклических структур»

    Выполнил: студент гр.
    Проверил:
    Москва 2021 г.

    Оглавление

    1. Задание на разработку проекта и вариант задани ….…………….……....3

    1. Схемы алгоритмов…………………………………………………………...4

    1. Программный код ………………………………….………………………..6

    1. Результаты выполнения проектов……………….…….……………...…...9

    1. Доказательство правильности……………………………………………..9


    1.Задание на разработку проекта и вариант задания
    Создать приложение (решение), состоящее из трех проектов с именем Lab7 в соответствии с общим заданием для вычисления функции с условием l=f(a,x )(Рисунок 1)



    Рисунок 1 – Задание

    2. Схемы алгоритмов

    Схема Main()(Рисунок 2)



    Рисунок 2- Схема алгоритма главной функции main()

    Схема Ввода и вывода (Рисунок 3)



    Рисунок 3 - Схемы алгоритмов функций GetABXY и PutPN

    Схема Razv() (Рисунок 4 )


    Рисунок 4-схема функции Razv()
    Схема Razv2() (Рисунок 5)




    Рисунок 5-схема функции Razm()

    3. Код программы

    Главный файл:

    // Файл main1.cpp

    #include

    #include

    using namespace std;

    void GetAX(double& a, double& x);

    void PutLN(double, int);

    double Razv(double a, double x, int& n);

    double Razm(double a, double x, int& n);

    int main()

    {

    double a, x, l;

    int n; // Номер ветки
    GetAX(a, x); // Вызов функции ввода исходных данных

    int choice; // Вариант выбора решения

    cout << " Каким способом решать задачу?\n";

    cout << " 1 - с вложенными разветвлениями ";

    cout << " без библиотечных функций max и min \n ";

    cout << " 2 - со своими функциями minMy и maxMy \n ";

    cout << " Что выбираете 1 или 2 ?\n ";

    cin >> choice;

    switch (choice)

    {

    case 1:

    l = Razv(a, x, n);

    break;

    case 2:

    l = Razm(a, x, n);

    break;

    default:

    cout << "Ввод выполнен неправильно! ";

    cout << endl;

    system("PAUSE");

    return 0;

    }
    PutLN(l, n); // Вызов функции вывода результатов

    system("PAUSE");

    return 0;

    }
    Файл с вводом и выводом:

    // Файл GetPut.cpp с функциями ввода и вывода

    #include

    using namespace std;

    // Определение функции ввода

    void GetAX(double& a, double& x)

    {

    setlocale(LC_ALL, "rus");

    cout << " Введите a, x\n ";

    cin >> a >> x;

    }

    // Определение функции вывода

    void PutLN(double l, int n)

    {

    setlocale(LC_ALL, "rus");

    cout << " Вычислено значение сложной функции д = " << l << endl;

    cout << " Номер ветки разветвления n = " << n << endl;

    }

    Файл без доп. функций мин. и макс и c доп. функций мин. и макс:

    // Файл Raz с функциями Razv, Razm

    #include

    #include

    using namespace std;
    // Определение ф-ции с вложенными разветвлениями и без функций max и min

    double Razv(double a, double x, int& n)

    {

    double l; // Локальная переменная ФУНКЦИИ

    if (x >1)

    {
    l = 0;

    n = 3;

    }

    else

    if (x < 0)

    {

    l = pow(a, x);

    if (x > l) l =x;

    n = 2;

    }

    else

    {

    l = (x-a)/x;

    double l1 = sqrt(a)+x;

    double l2 = pow(sin(x),2);

    if (l > l1) l = l1;

    if (l > l2) l = l2;

    n = 1;

    }

    return l;

    }

    // Описания (прототипы) ф-ций maxMy и minMy

    double max(double x, double y);

    double min(double x, double y);

    //Определение ф-ции с вложенными разветвлениями, использующей maxMy и minMy

    double Razm(double a, double x, int& n)

    {

    if (x > 1)

    {

    n = 3;

    return 0;

    }

    else if (x < 0)

    {

    n = 2;

    return max(x, pow(a, x));

    }

    else

    {

    n = 1;

    return min((x - a) / x, min(sqrt(a) + x, pow(sin(x), 2)));

    }

    }

    // Определение функций maxMy

    double max(double x, double y)

    {

    double f;

    if (x > y) f = x; else f = y;

    return f;

    }

    // Определение функций minMy

    double min(double x, double y)

    {

    double f;

    if (x < y) f = x; else f = y;

    return f;

    }


    4. Результат выполнения проектов

    Консольная отладка для 3 проекта (Рисунок 6)


    Рисунок 6- Консольная отладка для 3 проекта
    5.Доказательство правильности работы программы
    Таблица 1 – таблица данных

    Исходные данные

    Результат

    № ветви

    a=5

    x=0.5

    l=-9

    n=1

    a=5

    x=-5

    l=0.00032

    n=2

    a=5

    x=5

    l=0

    n=3

    Доказательство по веткам разветвления(для подcчёта берутся значения из таблицы
    1):

    Для первой строки x∈[0;1],тогда вычисления идут по первой ветви и находится l=min((x - a) / x, sqrt(a) + x, (sin(x))^2)=

    min((0.5 - 5) / 0.5, sqrt(5) + 0.5, (sin(0.5))^2)=min(-9,2.23607+0.5,0.22985),

    l=-9 – верно

    Для второй строки x<0 ,тогда вычисления идут по второй ветви и находится вычисления l= max(x,a^x)=max(5,5^(-5)), l=0.00032- верно

    Для третий строки ,заданы вычисления третьей ветви и находится вычисления l=0,l=0-верно
    Вывод: при тестовых данных результаты ручного расчёта и вычисления на компьютере совпадают.


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