Добавлен: 05.12.2023
Просмотров: 30
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство науки и высшего образования РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ ИМ. Р.Е. АЛЕКСЕЕВА»
(НГТУ)
ДЗЕРЖИНСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ
Кафедра Автоматизация, энергетика, математика и информационные системы
ОТЧЕТ
по дисциплине «Технологии программирования»
к лабораторной работе №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. Также, я научилась производить ввод значений с помощью динамических одномерных массивов, заполненных случайными числами, чтобы размерность массива вводил пользователь.