Линейные, разветвляющиеся и циклические алгоритмы. отчет 1. Отчет по дисциплине Технологии программирования
Скачать 134.71 Kb.
|
Министерство науки и высшего образования РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМ. Р.Е. АЛЕКСЕЕВА» (НГТУ) ДЗЕРЖИНСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ Кафедра Автоматизация, энергетика, математика и информационные системы ОТЧЕТ по дисциплине «Технологии программирования» к лабораторной работе №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 Описание работыЗаданиеПосчитать значение функции. Вывести данные в файл и посчитать значения аргумента в 16-й, 8-й и 10-й системах счисления. БиблиотекиПеременныеx_1 – переменная куда заносится аргумент. y0, y2, y3, y4, dop_x, y – переменные типа double для упрощения подсчета значения функции. ch – переменная для подсчета аргумента в различных системах счисления. Функцииrand - создает псевдослучайное число. srand - задает начальное начальное значение для генератора псевдослучайных чисел, используемого rand функцией. abs - вычисляет модуль аргумента. pow(x,y) - вычисляет значение x, возведенное в степень y. sin – вычисляет синус аргумента К од программы#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 – скриншот выполнения программы (допустимое значение) Рисунок 2 – скриншот выполнения программы (вывод в файл) Рисунок 3 – скриншот выполнения программы (недопустимое значение) ВыводЯ научилась работать с базовыми средствами ввода/вывода и математическими функциями, преобразовывать тип переменных, выводить результат работы программы в файл. Р азветвляющиеся алгоритмыОписание работыЗаданиеПосчитать значение функции в заданном интервале, вывести данные в файл. БиблиотекиПеременныеa – переменная для значения a типа double (определяется пользователем). x – переменная для значения x типа double (определяется пользователем). y1, y2, y3, y4 – переменная для подсчета значения функции типа double. Функцииpow(x,y) - вычисляет значение x, возведенное в степень y. tan – вычисляет тангенс. sqrt – вычисляет квадратный корень. sin – вычисляет синус. К од программы#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 – скриншот выполнения программы (допустимое значение) Рис. 2 – скриншот выполнения программы (вывод в файл) ВыводыЯ научилась работать с базовыми алгоритмами с условиями. Ц иклические алгоритмыОписание работыЗаданиеРазработать программу и алгоритм по вычислению заданного выражения Рисунок 1 – задание. с помощью трех циклов: Цикла с предусловием while (условие) тело цикла Цикла с постусловием do тело цикла while (условие); Цикла итерационным for (инициализация; условие; изменение управляющей переменной) тело цикла Т.е. необходимо выполнить одно и то же задание тремя способами и получить соответственно три одинаковых результата. Ввод значений осуществлять с помощью динамических одномерных массивов, заполненных случайными числами. Размерность массива вводит пользователь (параметр n). Обязательно осуществить проверку на допустимость значения n, исходя из условий задачи (границы сумм и произведений) Результаты выполнения программы выдать на экран и в файл. БиблиотекиПеременныеn – переменная куда заносится размер массивов arr_a и arr_b. sum1, sum2, sum3, mult, final – переменные типа int для разделения подсчета сумм и произведений по циклам. a rr_a, arr_b – массивы размера n с рандомно сгенерированными значениями. Функцииrand - создает псевдослучайное число. srand - задает начальное начальное значение для генератора псевдослучайных чисел, используемого rand функцией. Код программы#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 – скриншот выполнения программы (допустимое значение) Рисунок 2 – скриншот выполнения программы (вывод в файл) Рисунок 3 – скриншот выполнения программы (недопустимое значение) ВыводыЯ научилась писать программу и алгоритм по вычислению заданного выражения с помощью трех циклов: while, for, do while. Также, я научилась производить ввод значений с помощью динамических одномерных массивов, заполненных случайными числами, чтобы размерность массива вводил пользователь. |