

Нижегородский Государственный Технический Университет Имени Р.Е. Алексеева
Кафедра «Энергетические установки и тепловые двигатели» Дисциплина «Компьютерные технологии»
Лабораторная работа №3 Тема: Циклический алгоритм Вариант №15
Выполнил: Туев А.В.
23-ЭУД-1
Проверила: Шубина Н.В.
Нижний Новгород
2023

1. Постановка задачи (1)
Составить блок-схему и программу для вычисления таблицы значений функции U(x,y) при фиксированном значении y и все значений x, меняющихся в заданном интервале с заданным шагом.
Для вычисления функции U(x,y) создать пользовательскую функцию, для вывода таблицы в С++ использовать функцию printf().
|
|
если |
− ≤ −1 |
|
|||
= {ln( 4 + 1) |
если − 1 < − < 1 |
||
2 − |
если |
− ≥ 1 |
-1 ≤ x ≤ 1 с шагом hx = 0.4 и y = -1
2. Блок-схема (1 for/while)
1) Вспомогательная блок-схема для пользовательской функции fU(x,y) для вычисления U(x,y):
Вход в fU(x,y)
Описание переменных a, U
a = x - y
a ≤ -1
=
a < 1
= ln( 4 + 1)
= 2 −

return U
2) Основная блок-схема:
Начало
Описание переменных xn, xk, hx, y
«Введите xn, xk, hx, y :»
Ввод xn, xk, hx, y
«Исходные данные:» |
||||
xn = |
xk = |
hx = |
y = |
|
«Таблица результатов: |
||||
|
x |
y |
U» |
|
|
|
x = xn |
|
|
|
|
x ≤ xk |
|
|
|
U = fU(x,y) |
|
||
|
x |
y |
U |
|
|
x = x + hx |
|
||
|
Конец |
|

3. Листинг программы на С++ (1 while)
#include “stdafx.h” #include <math.h> #include <iostream> #include <conio.h> using namespace std;
double fU(double x, double y)
{
double a, U; 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;
}
return U;
} |
|
|
void main() |
|
|
{ |
|
|
double x, xn, xk, hx, y; |
|
|
setlocale(LC_ALL, “Russian”); |
|
|
printf(“Введите xn, xk, hx, y: \n”); |
|
|
cin >> xn >> xk >> hx >> y; |
|
|
printf("\n Исходные данные: \n\n xn = %5.3f |
|
xk = %5.3f hx = %5.3f |
y = %5.3f \n", xn, xk, hx, y); |
|
|
printf("\n Таблица результатов: \n\n x |
y |
U \n"); |
x = xn; |
|
|
while (x <= xk + hx / 10.0) |
|
|
{ |
|
|
U = fU(x,y); |
|
|
printf("\n %8.3f %8.3f %8.3f ", x, y, U); |
|
|
x = x + hx; |
|
|
} |
|
|
getchar(); |
|
|
} |
|
|

4. Результаты программы на C++ (1 while)
5. Листинг программы на С++ (1 for)
#include “stdafx.h” #include <math.h> #include <iostream> #include <conio.h> using namespace std;
double fU(double x, double y)
{
double a, U; 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;
}
return U;
} |
|
|
void main() |
|
|
{ |
|
|
double x, xn, xk, hx, y; |
|
|
setlocale(LC_ALL, “Russian”); |
|
|
printf(“Введите xn, xk, hx, y: \n”); |
|
|
cin >> xn >> xk >> hx >> y; |
|
|
printf("\n Исходные данные: \n\n xn = %5.3f |
|
xk = %5.3f hx = %5.3f |
y = %5.3f \n", xn, xk, hx, y); |
|
|
printf("\n Таблица результатов: \n\n x |
y |
U \n"); |
for (x = xn; x <= xk + hx / 10.0; x = x + hx) |
|
|
{ |
|
|
U = fU(x,y); |
|
|
printf("\n %8.3f %8.3f %8.3f ", x, y, U); |
|
|
} |
|
|
getchar(); |
|
|
} |
|
|

6. Результаты программы на C++ (1 for)
7. Программа в Mathcad (1 ранжированная переменная)
8. Программа в Mathcad (1 while)

9. Программа в Mathcad (1 for)
10.Блок-схема (1 do while)
1)Вспомогательная блок-схема для пользовательской функции fU(x,y) для вычисления U(x,y):
Вход в fU(x,y)
Описание переменных a, U
a = x - y
a ≤ -1
=
a < 1
= ln( 4 + 1)

= 2 −
return U
2) Основная блок-схема:
Начало
Описание переменных xn, xk, hx, y
«Введите xn, xk, hx, y :»
Ввод xn, xk, hx, y
«Исходные данные:» xn = xk = hx = y =
«Таблица результатов: x y U»
x = xn
U = fU(x,y)
x y U
x = x + hx
x ≤ xk
Конец

11. Листинг программы на С++ (1 do while)
#include “stdafx.h” #include <math.h> #include <iostream> #include <conio.h> using namespace std;
double fU(double x, double y)
{
double a, U; 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;
}
return U;
} |
|
|
void main() |
|
|
{ |
|
|
double x, xn, xk, hx, y; |
|
|
setlocale(LC_ALL, “Russian”); |
|
|
printf(“Введите xn, xk, hx, y: \n”); |
|
|
cin >> xn >> xk >> hx >> y; |
|
|
printf("\n Исходные данные: \n\n xn = %5.3f |
|
xk = %5.3f hx = %5.3f |
y = %5.3f \n", xn, xk, hx, y); |
|
|
printf("\n Таблица результатов: \n\n x |
y |
U \n"); |
x = xn; |
|
|
do |
|
|
{ |
|
|
U = fU(x,y); |
|
|
printf("\n %8.3f %8.3f %8.3f ", x, y, U); |
|
|
x = x + hx; |
|
|
} |
|
|
while (x <= xk + hx / 10.0); |
|
|
getchar(); |
|
|
} |
|
|