
Нижегородский Государственный Технический Университет Имени Р.Е. Алексеева Кафедра «Энергетические установки и тепловые двигатели» Дисциплина «Компьютерные технологии» Лабораторная работа №2 Тема: Разветвляющийся алгоритм Вариант №15
Выполнил: Туев А.В. 23-ЭУД-1 Проверила: Шубина Н.В.
Нижний Новгород 2023
Постановка задачи (1) Разработать алгоритм (в виде блок-схемы), написать программы на языке C++, в Mathcad и Excel, привести результаты расчёта задачи. При помощи разветвления на 3 направления с помощью вложенных операторов “if” (а) и последовательных операторов “if” (б) вычислить и распечатать значение функции U для любых заданных значений аргументов x и y, где:
Описание переменных x, y, U, a
«Введите x, y»
Начало
Блок-схема (1а)
a
<
1
a
≤
-1
a
= x - y
«Исходные
данные:»
x
= y
=
Ввод
x, y
«Результаты:»
U
=
Конец
Листинг программы на С++ (1a) #include “stdafx.h” #include <math.h> #include <iostream> #include <conio.h> #include <iomanip> using namespace std; void main() { double x, a, y, z; setlocale(LC_ALL, “Russian”); cout << “Введи x, y: \n”; cin >> x >> y; cout << “\n x = ” << x << setw(7) << ”y = ” << y << endl; a = x – y; if (a <= -1) U = y * exp(x); else if (a < 1) U = log(pow(x,4) + 1); else U = pow(x,2) – y; cout << “\n Результаты: \n U = ” << U << endl; getchar(); }
Р
езультаты программы на C++ (1a)
П
рограмма в Mathcad (1a)


Конец
«Результаты:» U =
a ≥ 1
a < 1
a ≤ -1
a = x - y
«Исходные данные:» x = y =
Ввод x, y
«Введите x, y»
Описание переменных x, y, U, a
Начало
Блок-схема (1б)
Листинг программы на С++ (1б) #include “stdafx.h” #include <math.h> #include <iostream> #include <conio.h> #include <iomanip> using namespace std; void main() { double x, a, y, z; setlocale(LC_ALL, “Russian”); cout << “Введи x, y: \n”; cin >> x >> y; cout << “\n x = ” << x << setw(7) << ”y = ” << y << endl; a = x – y; if (a <= -1) U = y * exp(x); if (a > -1 && a < 1) U = log(pow(x,4) + 1); if (a >= 1) U = pow(x,2) – y; cout << “\n Результаты: \n U = ” << U << endl; getchar(); }
Р
езультаты программы на C++ (1б)
Программа в Mathcad (1б)
П
рограмма в Excel (1)
Постановка задачи (2) Разработать алгоритм (в виде блок-схемы), написать программы на языке C++, в Mathcad и Excel, привести результаты расчёта задачи. Составить программу для вычисления значения функции Z при различных x и y с помощью ручного отбора путём сравнения значений предлагаемых функций (а) или же при помощи использования функций min/max из библиотеки <algorithm> (б):
a = b =
«Введите x, y»
c ≤ 2
c =
Начало
Описание переменных x, y, Z, a, b, c
Ввод x, y
«Исходные данные:» x = y =
c = x + y
Z = a
b < Z
Z = b
Z =
Конец
Блок-схема (2а)
Листинг программы на С++ (2а) #include “stdafx.h” #include <math.h> #include <iostream> #include <conio.h> #include <iomanip> using namespace std; void main() { double x, y, Z, a, b ,c; setlocale(LC_ALL, “Russian”); cout << “Введи x, y: \n”; cin >> x >> y; cout << “\n Исходные данные: \n x = ” << x << setw(7) << ”y = ” << y << endl; c = x + y; cout << “\n c = ” << c << endl; if (c <= 2) { a = pow(fabs(cos(x)), y); b = pow(x + 6, 1.0 / 5.0); cout << setw(4) << "a = " << setw(10) << a << endl; cout << setw(4) << "b = " << setw(10) << b << endl; Z = a; if (b < Z) Z = b; } else Z = pow(x, 2) + x * pow(y, 2); cout << "\n Результат: \n Z = " << Z << endl; getchar(); }
Р
езультаты программы на С++ (2а)
Программа в Mathcad (2а)
Начало
c ≤ 2
Z =
Начало
Описание переменных x, y, Z, a, b, c
c =
Ввод x, y
«Исходные данные:» x = y =
c = x + y
«Введите x, y»
a = b =
Блок-схема (2б)
Листинг программы на С++ (2б) #include “stdafx.h” #include <math.h> #include <iostream> #include <conio.h> #include <iomanip> using namespace std; void main() { double x, y, Z, a, b ,c; setlocale(LC_ALL, “Russian”); cout << “Введи x, y: \n”; cin >> x >> y; cout << “\n Исходные данные: \n x = ” << x << setw(7) << ”y = ” << y << endl; c = x + y; cout << “\n c = ” << c << endl; if (c <= 2) { a = pow(fabs(cos(x)), y); b = pow(x + 6, 1.0 / 5.0); cout << setw(4) << "a = " << setw(10) << a << endl; cout << setw(4) << "b = " << setw(10) << b << endl; Z = min(a,b); } else Z = pow(x, 2) + x * pow(y, 2); cout << "\n Результат: \n Z = " << Z << endl; getchar(); }
Р
езультаты программы на С++ (2б)
Программа в Mathcad (2б)
Программа в Excel (2)
Постановка задачи (3) Для пары чисел x и y выяснить, попадает ли точка с координатами (x,y) в область 1 (красный цвет) или в область 2( синий цвет) и вывести на экран соответствующее сообщение.
«Координаты выстрела:» x = y =
Начало
Описание переменных x, y, Z, a, b, c
Ввод x, y
«Введите x, y»
a или b
Блок-схема (3)
Начало
«Промах!»
«Попадание!»
Листинг программы на С++ (3) #include “stdafx.h” #include <math.h> #include <iostream> #include <algorithm> #include <iomanip> using namespace std; void main() { double x, y; bool a, b; setlocale(LC_ALL, “Russian”); cout << “Введи x, y: \n”; cin >> x >> y; cout << “\n Координаты точки выстрела: \n x = ” << x << ”\t \t y = ” << y << endl; a = 4 < pow(x, 2) + pow(y, 2) && pow(x, 2) + pow(y, 2) < 9; b = 0 < y && y < 2 - fabs(x); if (a || b) cout << "\n \t Попадание!" << endl; else cout << "\n \t Промах!" << endl; getchar(); }
Результаты программы на С++ (3) Попадание в Область 1:
Попадание в Область 2:
Промах:
Программа в Mathcad (3)
П
рограмма в Excel (3)