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

  • Кафедра

  • Линейные, разветвляющиеся и циклические алгоритмы. отчет 1. Отчет по дисциплине Технологии программирования


    Скачать 134.71 Kb.
    НазваниеОтчет по дисциплине Технологии программирования
    АнкорЛинейные, разветвляющиеся и циклические алгоритмы
    Дата08.05.2023
    Размер134.71 Kb.
    Формат файлаdocx
    Имя файлаотчет 1.docx
    ТипОтчет
    #1115412


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

    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

    УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

    «НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

    УНИВЕРСИТЕТ ИМ. Р.Е. АЛЕКСЕЕВА»

    (НГТУ)

    ДЗЕРЖИНСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ
    Кафедра Автоматизация, энергетика, математика и информационные системы


    ОТЧЕТ

    по дисциплине «Технологии программирования»

    к лабораторной работе №1

    Тема: «Линейные, разветвляющиеся и циклические алгоритмы»

    Выполнил:

    Студент гр. № группа 21ИСТ

    Колотова Валерия Александровна

    22.11.22

    Проверил:

    ____________________(оценка)

    ___________________ (дата)

    Ст. преподаватель каф. АЭМИС

    ___________/Кулигина Н.О./
    Дзержинск, 2022




    Содержани

    1Линейные алгоритмы 3

    1.1Описание работы 3

    1.1.1Задание 3

    1.1.2Библиотеки 3

    1.1.3Переменные 4

    1.1.4Функции 4

    1.2Код программы 5

    1.3Скриншоты работы программ: 6

    1.4Вывод 6

    2Разветвляющиеся алгоритмы 7

    2.1Описание работы 7

    2.1.1Задание 7

    2.1.2Библиотеки 7

    2.1.3Переменные 7

    2.1.4Функции 7

    2.2Код программы 8

    2.3Скриншоты работы программ: 9

    2.4Выводы 9

    3Циклические алгоритмы 10

    3.1Описание работы 10

    3.1.1Задание 10

    3.1.2Библиотеки 10

    1.1.1Переменные 10

    3.1.3Функции 11

    3.2Код программы 11

    3.3Скриншоты работы программ: 16

    3.4Выводы 17

    1 Линейные алгоритмы 3

    1.1 Описание работы 3

    1.1.1 Задание 3

    1.1.2 Библиотеки 3

    1.1.3 Переменные 3

    1.1.4 Функции 4

    1.2 Код программы 5

    1.3 Скриншоты работы программ: 6

    1.4 Вывод 6

    2 Разветвляющиеся алгоритмы 7

    2.1 Описание работы 7

    2.1.1 Задание 7

    2.1.2 Библиотеки 7

    2.1.3 Переменные 7

    2.1.4 Функции 7

    2.2 Код программы 8

    2.3 Скриншоты работы программ: 9

    2.4 Выводы 9

    3 Циклические алгоритмы 10

    3.1 Описание работы 10

    3.1.1 Задание 10

    3.1.2 Библиотеки 10

    3.1.1 Переменные 10

    3.1.2 Функции 11

    3.2 Код программы 11

    3.3 Скриншоты работы программ: 16

    3.4 Выводы 17

    1. Л инейные алгоритмы




      1. Описание работы

        1. Задание


    Посчитать значение функции. Вывести данные в файл и посчитать значения аргумента в 16-й, 8-й и 10-й системах счисления.

        1. Библиотеки


    - объявляет объекты, управляющие чтением из стандартных потоков и записью в них.

    - выполняет простых математических операций.

    - включает набор классов, методов и функций, которые предоставляют интерфейс для чтения/записи данных из/в файл.

    - содержит определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода.

    - содержит типы и функции для работы с датой и временем.

        1. Переменные


    x_1 – переменная куда заносится аргумент.

    y0, y2, y3, y4, dop_x, y – переменные типа double для упрощения подсчета значения функции.

    ch – переменная для подсчета аргумента в различных системах счисления.

        1. Функции


    rand - создает псевдослучайное число.

    srand - задает начальное начальное значение для генератора псевдослучайных чисел, используемого rand функцией.

    abs - вычисляет модуль аргумента.

    pow(x,y) - вычисляет значение x, возведенное в степень y.

    sin – вычисляет синус аргумента
      1. К од программы


    #include

    #include

    #include

    #include

    #include

    using namespace std;
    int main() {

    setlocale(LC_ALL, "Russian");

    ofstream fout("lab1.txt");

    srand(time(NULL));

    int x_1 = rand();

    cout << "Введите значение x = ";

    fout << "Введите значение x = ";

    cout << x_1 << endl;

    fout << x_1 << endl;

    double y0, y2, y3, y4, dop_x;

    dop_x = (abs(x_1) / 2);

    y0 = pow(sin(dop_x), 2);

    y2 = 3 ^ (1 / (x_1 - 1));

    y3 = (x_1 ^ 4 - 16) ^ (1 / 6);

    y4 = (1 - log(x_1));

    double y = ((y0 + y2) / (y3)) * y4;


    fout << "y = ";

    fout << y << endl;

    cout << "y = ";

    cout << y << endl;

    int ch = (int) x_1;

    cout << "x в 16-ой системе: ";

    cout << hex << ch << endl;

    fout << "x в 16-ой системе: ";

    fout << hex << ch << endl;

    cout << "x в 8-ой системе: ";

    cout << oct << ch << endl;

    f out << "x в 8-ой системе: ";

    fout << oct << ch << endl;

    cout << "x в 10-ой системе: ";

    cout << dec << ch << endl;

    fout << "x в 10-ой системе: ";

    fout << dec << ch << endl;

    }
      1. Скриншоты работы программ:



    Рисунок 1 – скриншот выполнения программы (допустимое значение)


    Рисунок 2 – скриншот выполнения программы (вывод в файл)


    Рисунок 3 – скриншот выполнения программы (недопустимое значение)
      1. Вывод


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


    1. Р азветвляющиеся алгоритмы

      1. Описание работы

        1. Задание


    Посчитать значение функции в заданном интервале, вывести данные в файл.

        1. Библиотеки


    - объявляет объекты, управляющие чтением из стандартных потоков и записью в них.

    - выполняет простых математических операций.

    - включает набор классов, методов и функций, которые предоставляют интерфейс для чтения/записи данных из/в файл.

        1. Переменные


    a – переменная для значения a типа double (определяется пользователем).

    x – переменная для значения x типа double (определяется пользователем).

    y1, y2, y3, y4 – переменная для подсчета значения функции типа double.

        1. Функции


    pow(x,y) - вычисляет значение x, возведенное в степень y.

    tan – вычисляет тангенс.

    sqrt – вычисляет квадратный корень.

    sin – вычисляет синус.


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


    #include

    #include

    #include
    using namespace std;
    int main()

    {

    ofstream fout("lab2.txt");

    setlocale(LC_ALL, "Rus");

    double a;

    cout << "Введите a: " << endl;

    fout << "Введите a: ";

    cin >> a;

    fout << a << endl;

    cout << "Введите x: " << endl;

    fout << "Введите x:";

    double x;

    cin >> x;

    fout << x << endl;
    double y1 = tan(a + x);

    double y2 = (-pow(1, -x)) * a;

    double y3 = sqrt((pow(x, 2) - 5));

    double y4 = sin(2 * x);
    if (x <= a)

    cout << "y = " << y1 << endl;

    fout << "y = " << y1 << endl;

    if (x > 0)

    cout << "y = " << y2 << endl;

    fout << "y = " << y2 << endl;

    if ((x >= 2 * a) & (x <= pow(a, 2)))

    cout << "y = " << y3 << endl;

    fout << "y = " << y3 << endl;

    if (x <= a + 10)

    cout << "y = " << y4 << endl;

    fout << "y = " << y4 << endl;

    }
      1. С криншоты работы программ:




    Рис. 1 – скриншот выполнения программы (допустимое значение)



    Рис. 2 – скриншот выполнения программы (вывод в файл)


      1. Выводы


    Я научилась работать с базовыми алгоритмами с условиями.


    1. Ц иклические алгоритмы

      1. Описание работы

        1. Задание


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



    Рисунок 1 – задание.
    с помощью трех циклов:

    • Цикла с предусловием

    while (условие)

    тело цикла

    • Цикла с постусловием

    do

    тело цикла

    while (условие);

    • Цикла итерационным

    for (инициализация; условие; изменение управляющей переменной)

    тело цикла

    Т.е. необходимо выполнить одно и то же задание тремя способами и получить соответственно три одинаковых результата.

    Ввод значений осуществлять с помощью динамических одномерных массивов, заполненных случайными числами.

    Размерность массива вводит пользователь (параметр n). Обязательно осуществить проверку на допустимость значения n, исходя из условий задачи (границы сумм и произведений)

    Результаты выполнения программы выдать на экран и в файл.


        1. Библиотеки


    - объявляет объекты, управляющие чтением из стандартных потоков и записью в них.

    - включает набор классов, методов и функций, которые предоставляют интерфейс для чтения/записи данных из/в файл.

    - содержит типы и функции для работы с датой и временем.
        1. Переменные


    n – переменная куда заносится размер массивов arr_a и arr_b.

    sum1, sum2, sum3, mult, final – переменные типа int для разделения подсчета сумм и произведений по циклам.

    a rr_a, arr_b – массивы размера n с рандомно сгенерированными значениями.

        1. Функции


    rand - создает псевдослучайное число.

    srand - задает начальное начальное значение для генератора псевдослучайных чисел, используемого rand функцией.
      1. Код программы


    #include

    #include

    #include

    using namespace std;
    int main()

    {

    ofstream fout("lab3.txt");

    setlocale(LC_ALL, "Rus");

    int n;

    cout << "Введите размерность массива:";

    fout << "Введите размерность массива:";

    cin >> n;

    if (n <= 2)

    cout << "Размер массива должен превышать 2";

    else

    {

    fout << n;

    srand(time(NULL));

    int* arr_a = new int[n];

    int* arr_b = new int[n];

    for (int i = 0; i < n; i++)

    {

    arr_a[i] = rand() % 60;

    arr_b[i] = rand() % 60;

    }

    cout << "Массив a:" << endl;

    fout << "Массив a:" << endl;

    for (int i = 0; i < n; i++)

    {

    cout << arr_a[i] << " ";

    fout << arr_a[i] << " ";

    }

    cout << endl;

    cout << "Массив b:" << endl;

    f out << "Массив b:" << endl;

    for (int i = 0; i < n; i++)

    {

    cout << arr_b[i] << " ";

    fout << arr_b[i] << " ";

    }

    cout << endl;

    fout << endl;
    int sum1 = 0;

    int sum2 = 0;

    int sum3 = 0;

    int mult = 1;

    int final = 0;

    //while

    int i = 3;

    while (i < n)

    {

    if (arr_a[i] - arr_b[i] == 0)

    {

    mult = 0;

    }
    else

    {

    mult *= (arr_a[i] - arr_b[i]);

    i++;

    }

    }
    i = 1;

    while (i < n - 2)

    {

    if (i - 2 < 0)

    {

    i++;

    }

    else

    {

    sum1 = sum1 + arr_a[i - 2];

    i++;

    }
    }

    i = 1;

    while (i < n - 2)

    {

    if (i + 1 < n)

    {

    sum2 = sum2 + (arr_a[i] / arr_b[i + 1]);

    i++;

    }

    else

    {

    break;

    }

    }
    i = 1;

    while (i < n - 2)

    {

    sum3 += sum2 += sum1;

    i++;

    }

    final = sum3 + mult;

    cout << "Цикл while: " << final << endl;

    fout << "Цикл while: " << final << endl;
    sum1 = 0;

    sum2 = 0;

    sum3 = 0;

    mult = 1;

    final = 0;
    //for

    for (int i = 3; i < n; i++)

    {

    if (arr_a[i] - arr_b[i] == 0)

    {

    mult = 0;

    }
    else

    {

    mult *= (arr_a[i] - arr_b[i]);




    }

    }


    for (int i = 1; i < n - 2; i++)

    {

    if (i - 2 < 0)

    {

    continue;

    }

    else

    {

    sum1 = sum1 + arr_a[i - 2];

    }
    }

    for (int i = 1; i < n - 2; i++)

    {

    if (i + 1 < n)

    {

    sum2 = sum2 + (arr_a[i] / arr_b[i + 1]);

    }

    else

    {

    break;

    }

    }


    for (i = 1; i < n - 2; i++)

    {

    sum3 += sum2 += sum1;

    }

    final = sum3 + mult;

    cout << "Цикл for: " << final << endl;

    fout << "Цикл for: " << final << endl;
    sum1 = 0;

    sum2 = 0;

    sum3 = 0;

    mult = 1;

    final = 0;
    //do while

    int k = 3;

    do {

    if (arr_a[k] - arr_b[k] == 0)

    {

    mult = 0;

    }
    else

    {

    mult *= (arr_a[k] - arr_b[k]);

    k++;

    }

    } while (k < n);
    k = 1;

    do {

    if (k - 2 < 0)

    {

    k++;

    }

    else

    {

    sum1 = sum1 + arr_a[k - 2];

    k++;

    }
    } while (k < n - 2);
    k = 1;

    do {

    if (k + 1 < n)

    {

    sum2 = sum2 + (arr_a[k] / arr_b[k + 1]);

    k++;

    }

    else

    {

    break;

    }

    } while (k < n - 2);

    k = 1;

    do {

    sum3 += sum2 += sum1;

    k++;

    } while (k < n - 2);


    final = sum3 + mult;

    cout << "Цикл do while: " << final << endl;

    fout << "Цикл do while: " << final << endl;

    }

    }

      1. Скриншоты работы программ:




    . Рисунок 1 – скриншот выполнения программы (допустимое значение)



    Рисунок 2 – скриншот выполнения программы (вывод в файл)


    Рисунок 3 – скриншот выполнения программы (недопустимое значение)

      1. Выводы


    Я научилась писать программу и алгоритм по вычислению заданного выражения с помощью трех циклов: while, for, do while. Также, я научилась производить ввод значений с помощью динамических одномерных массивов, заполненных случайными числами, чтобы размерность массива вводил пользователь.




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