Скачиваний:
3
Добавлен:
17.11.2024
Размер:
1.32 Mб
Скачать

Нижегородский Государственный Технический Университет Имени Р.Е. Алексеева

Кафедра «Энергетические установки и тепловые двигатели» Дисциплина «Компьютерные технологии»

Лабораторная работа №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

 

 

 

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();

 

 

}

 

 

Соседние файлы в папке 3 ЛР