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

  • Название

  • выфвфы. Отчет по лабораторной работе 1 Вариант (указывается при наличии) 5 по дисциплине


    Скачать 100.39 Kb.
    НазваниеОтчет по лабораторной работе 1 Вариант (указывается при наличии) 5 по дисциплине
    Анкорвыфвфы
    Дата02.10.2022
    Размер100.39 Kb.
    Формат файлаdocx
    Имя файлаLaboratornaya_rabota_1_Barlukov_A_S.docx
    ТипОтчет
    #709704


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

    ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
    Институт информационных технологий и анализа данных

    наименование

    Название работы - РАЗВЕТВЛЯЮЩИЙСЯ ВЫЧИСЛИТЕЛЬНЫЙ ПРОЦЕСС
    Отчет по лабораторной работе 1

    Вариант (указывается при наличии)


    №5

    по дисциплине Программирование

    наименование учебной дисциплины


    Выполнил

    Студент, номер группы (27.09.2021)

    Принял Должность
    (27.09.2021)

    Барлуков А.С.

    Группа: ЭВМб-22-2

    Баталов Т.Э.
    Иркутск –2021



    Лабораторная работа


    Задача А.

    1. Условие задачи
    Определите,  пересекаются ли парабола у=cx2+dx+f  и прямая y=ax+b. Если пересекаются, то определите, в каких точках.
    2. Математическая модель
    Используем следующие математические положения и формулы:

    1. . Если коэффициент b=0 то рассчет по этой формуле:

    X1=√(b-f);

    X2=-(b-f)

    2. Если дискриминант меньше нуля, то корней нет.

    ((d-a)*(d-a)-4*a*(f-b))<0

    3. Если коэффициент c равен нулю, то параболы не существует.

    4. Если дискриминант равен нулю, то корень один.

    ((d-a)*(d-a)-4*a*(f-b))==0

    5. Если дискриминант больше нуля, то корня два.

    ((d-a)*(d-a)-4*a*(f-b)) > 0


    3. Таблица 1 – Внешние спецификации



    Имя

    Назначение

    Тип

    Вх/Вых.

    Диапазон

    1

    c

    Коэффициент 1

    вещественное число

    вход

    -3.4E-38… +3.4E+38

    2

    d

    Коэффициент 2

    вещественное число

    вход

    -3.4E-38… +3.4E+38

    3

    f

    Коэффициент 3

    вещественное число

    вход

    -3.4E-38… +3.4E+38

    4

    a

    Коэффициент 4

    вещественное число

    вход

    -3.4E-38… +3.4E+38

    5

    b

    Коэффициент 5

    вещественное число

    вход

    -3.4E-38… +3.4E+38

    6

    X1

    Координата 1

    вещественное число

    выход

    -3.4E-38… +3.4E+38

    7

    X2

    Координата 2

    вещественное число

    выход

    -3.4E-38… +3.4E+38

    8

    Y1

    Координата 1

    вещественное число

    выход

    -3.4E-38… +3.4E+38

    9

    Y2

    Координата 2

    вещественное число

    выход

    -3.4E-38… +3.4E+38

    10

    С1

    Сообщение о существовании

    Текст

    выход

    1 вид

    11

    C2

    Сообщение о пересечении

    Текст

    выход

    2 вида

    12

    C3

    Сообщение о количестве точек

    Текст

    выход

    2 вида

    13

    C4

    Сообщение о координате точки

    Текст

    выход

    3 вида



    Таблица сообщений

    C1: «Не существует параболы»

    C2.1: «Пересекаются»

    C2.2: «Не пересекаются»

    C3.1: «Одна точка пересечения»

    C3.2: «Две точки пересечения»

    С4.1: «Координата первой точки»

    С4.2: «Координата второй точки»

    С4.3: «Координата точки»
    4.Алгоритмизация
    Блок-схема алгоритма представлена на рис. 1.

    Рис.1. Блок-схема алгоритма

    5. Проектирование тестов

    Таблица 2 – Таблица тестов


    Номер теста

    Назначение

    теста

    Входные данные

    Выходные данные

    1

    Параболы не существует, так как с=0

    c=0

    d=9

    f=1

    a=5

    b=0

    Парабола не существует

    2

    Не имеют ни одной точки пересечения

    c=1

    d=0

    f=2

    a=1

    b=0

    Не пересекаются

    3

    Пересекаются, дискриминант равен 0

    c=1

    d=0

    f=1

    a=0

    b=1

    Пересекаются.

    Одна точка пересечения.

    Координата точки = (0:1).


    4

    Пересекаются, дискриминант больше 0

    c=1

    d=0

    f=0

    a=0

    b=1

    Пересекаются.

    Две точки пересечения.

    Координата первой точки» = (1:1).

    Координата второй точки» = (-1:1).


    6. Проверка правильности алгоритма с помощью таблицы

    Тест 1: блоки 1,2,3,4,16

    Тест 2: блоки 1,2,3,5,6,16

    Тест 3: блоки 1,2,3,5,7,8,9,10,11,16

    Тест 4: блоки 1,2,3,5,7,8,12,13,14,15,16


    7. Кодирование алгоритма или запись алгоритма на языке С++
    #include

    #include

    using namespace std;

    int main()

    {

    setlocale(LC_ALL, "Russian");

    float c, d, f, a, b;

    float X1, X2, Y1, Y2;

    cout << "Введите координаты графиков" << endl;

    cin >> c >> d >> f >> a >> b;

    //проверим существование параболы

    cout << a << endl;

    if (c == 0)

    cout << "Парабола не существует" << endl;

    else {

    // проверим пересечение графиков

    if (((d - a) * (d - a) - 4 * a * (f - b)) < 0)

    cout << "Графики не пересекаются" << endl;

    else {

    // Узнаем количество точек и их координаты

    if (((d - a) * (d - a) - 4 * a * (f - b)) == 0)

    {
    if ((d == 0) && (a == 0))

    {

    X1 = sqrt(b - f);

    X2 = -sqrt(b - f);

    if ((abs(X1) == 0) && (abs(X2) == 0))

    {

    cout << "Одна точка" << endl;

    Y1 = c * X1 * X1 + d * X1 + f;

    cout << "Координата точки " << X1 << Y1 << endl;

    }

    else

    {

    cout << "Две точки" << endl;

    Y2 = c * X2 * X2 + d * X2 + f;

    Y1 = c * X1 * X1 + d * X1 + f;

    cout << "Координата первой точки {" << X1 << " " << Y1

    << "}" << endl;

    cout << "Координата второй точки {" << X2 << " " << Y2

    << "}" << endl;
    }

    }

    else

    {

    cout << "Одна точка" << endl;

    X1 = (-1 * (d - a)) / (2 * c);

    Y1 = c * X1 * X1 + d * X1 + f;

    cout << "Координата точки {" << X1 << " " << Y1 << "}" << endl;
    }

    }

    else

    {

    cout << "Две точки 2" << endl;

    X1 = (-1 * (d - a) - sqrt((d - a) * (d - a) - 4 * a * (f - b))) / 2;

    X2 = (-1 * (d - a) + sqrt((d - a) * (d - a) - 4 * a * (f - b))) / 2;

    Y1 = c * X1 * X1 + d * X1 + f;

    Y2 = c * X2 * X2 + d * X2 + f;

    cout << "Координата первой точки {" << X1 << " " << Y1

    << "}" << endl;

    cout << "Координата второй точки {" << X2 << " " << Y2

    << "}" << endl;

    }

    }

    }

    return 0;

    }

    Задача В.


    1. Условие задачи

    Заданы действительные числа X и Y. Определить, принадлежит ли точка с координатами (X,Y) заштрихованной части плоскости.(см. рис. 1)
    Рисунок 1-Д

    \
    2. Математическая модель
    Используем следующие математические положения и формулы:

    1. Точка должна быть ниже прямой y = -2x+1

    2. Точка должна быть ниже прямой y = 2x+1

    3. Точка должна быть выше прямой y = 2x-1

    4. Точка должна быть выше прямой y = -2x-1

    3.Таблица 1 – Внешние спецификации




    Имя

    Назначение

    Тип

    Вх/Вых.

    Диапазон

    1

    x

    Коэффициент 1

    вещественное число

    вход

    -3.4E-38… +3.4E+38

    2

    y

    Коэффициент 2

    вещественное число

    вход

    -3.4E-38… +3.4E+38

    3

    С1

    Сообщение о принадлежности точки

    Текст

    выход

    2 вида



    Таблица сообщений

    C1.1: “Точка входит в фигуру”

    C1.2: “Точка не входит в фигуру”

    4.Алгоритмизация
    Блок-схема алгоритма представлена на рис. 3.



    Рисунок 3 – Блок-схема алгоритма

    5. Проектирование тестов

    Таблица 2 – Таблица тестов


    Номер теста

    Назначение

    теста

    Входные данные

    Выходные данные

    1

    Точка находится за пределами

    x=1

    y=0

    “Точка не входит в фигуру”

    2

    Точка находится в контуре или на контуре фигуры

    x=0

    y=0

    “Точка входит в фигуру”


    6. Проверка правильности алгоритма с помощью таблицы

    Тест 1: блоки 1,2,(3 || 4 || 5 || 6),8,9

    Тест 2: блоки 1,2,3,4,5,6,7,9
    7. Кодирование алгоритма или запись алгоритма на языке С++
    #include

    #include

    using namespace std;

    int main()

    {

    setlocale(LC_ALL, "Russian");

    float x, y;

    cout << "Введи координаты" << endl;

    cin >> x >> y;

    if ((y > 1) || (y < -1) || (x > 0.5) || (x < -0.5)) {

    cout << "Точка за пределами фигуры" << endl;

    }

    else {

    if (((-2 * x + y) >= -1 && ((-2 * x + y) <= 1))) {

    cout << "1" << endl;

    }

    if (((2 * x + y) >= -1) && ((2 * x + y) <= 1)) {

    cout << "2" << endl;

    }

    if (((2 * x - y) >= -1) && ((2 * x - y) <= 1)) {

    cout << "3" << endl;

    }

    if (((-2 * x - y) >= -1) && ((-2 * x - y) <= 1)) {

    cout << "Точка в фигуре" << endl;

    }

    else {

    cout << "Точка не входит в фигуру" << endl;

    }

    else { cout << "Точка не входит в фигуру" << endl; }

    else { cout << "Точка не входит в фигуру" << endl; }

    else { cout << "Точка не входит в фигуру" << endl; }

    return 0;

    }

    Задача С.
    1. Условие задачи

    Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы (целое число в диапазоне 1–5) и масса тела в этих единицах (вещественное число). Найти массу тела в килограммах.

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

    X - вводное число,

    e – значение для перевода,

    r – результат.
    2. Математическая модель
    Используем следующие математические положения и формулы:

    1. 1кг = 100000мг

    2. 1кг = 1000г

    3. 1кг = 0,001т

    4. 1кг = 0,01ц
    3. Таблица 1 – Внешние спецификации



    Имя

    Назначение

    Тип

    Вх/Вых.

    Диапазон

    1

    X

    Определение диапазона

    Целое число

    вход

    [1..5] 

    2

    e

    Число для перевода

    вещественное число

    вход

    -3.4E-38… +3.4E+38

    3

    r

    Переведенное значение

    вещественное число

    выход

    -3.4E-38… +3.4E+38

    4

    C1

    Сообщение о диапазоне

    Текст

    выход

    1 вид


    5

    C2

    Сообщение о результате перевода

    Текст

    выход

    1 вид


    6

    С3

    Сообщение о не надобности перевода

    Текст

    выход

    3 вида


    Таблица сообщений

    C1: “Число не входит в диапазон”

    C2: “Результат в кг”

    C3.1: “Масса дана в кг”

    С3.2: “Переводимое число отрицательно”

    С3.3: “Переводимое число равно 0”
    4.Алгоритмизация
    Блок-схема алгоритма представлена на рис. 2.



    Рисунок 2 – Блок-схема алгоритма

    5. Проектирование тестов

    Таблица 2 – Таблица тестов


    Номер теста

    Назначение

    теста

    Входные данные

    Выходные данные

    1

    Вводное число не входит в диапазон

    X = 0

    e = 20

    « Число не входит в диапазон »

    2

    Вводное число входит в диапазон, но оно равно 1

    X = 1

    e = 20

    «Масса дана в кг»

    3

    Вводное число входит в диапазон. Но число для перевода отрицательно

    X = 3

    e = - 20

    «Переводимое число отрицательно»

    4

    Вводное число входит в диапазон. Но число для перевода равно 0

    X = 3

    e = 0

    «Переводимое число равно 0»

    5

    Вводное число входит в диапазон, перевод массы в кг

    X = 3

    e = 50000

    « Результат в кг »,

    r = 50


    6. Проверка правильности алгоритма с помощью таблицы

    Тест 1: блоки 1,2,3,5,12,14

    Тест 2: блоки 1,2,3,4,5,6,11,14

    Тест 3: блоки 1,2,3,12,14

    Тест 4: блоки 1,2,3,4,13,14

    Тест 5: блоки 1,2,3,4,5,(7,8,9,10),11,14

    7. Кодирование алгоритма или запись алгоритма на языке С++
    #include

    #include

    using namespace std;

    int main()

    {

    setlocale(LC_ALL, "Russian");

    int X;

    float e,r;

    cout << "Введи единицу перевода (массы)" << endl;

    cin >> X;

    cout << "Введи число (массу) для перевода" << endl;

    cin >> e;

    if (e == 0) cout<< "Переводимое число равно 0" << endl;

    if (e<0) cout<< "Переводимое число отрицательно" << endl;
    switch (X)

    {

    case 1 : cout<< "Масса дана в кг = " << e << endl;

    break;

    case 2 : r=e*100000; cout<<"результат = "<
    break;

    case 3 : r=e*1000; cout<<"результат = "<
    break;

    case 4 : r=e*0.001; cout<<"результат = "<
    break;

    case 5 : r=e*0.01; cout<<"результат = "<
    break;

    default :

    cout<<"Число не входит в диапазон"<< endl;
    }

    return 0;

    }


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