лабы / Laba_varik12_8
.2.pdfМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информатика»
Лабораторная работа №8 – Проект 2
«Разработка проекта, решающего задачу построения таблицы значений функции двух переменной»
по теме:
«Циклические алгоритмические структуры. Регулярные циклические структуры и их программная реализация»
по дисциплине «Информатика»
Выполнил: студент гр. БИН2104 Книгин Е.А. Вариант №12
Проверил:
Москва, 2021 г.
СОДЕРЖАНИЕ
1)ЦЕЛЬ РАБОТЫ
2)ФОРМУЛИРОВКА ЗАДАЧИ №12
3)ФОРМАЛИЗАЦИЯ ЗАДАНИЯ
4)РАЗРАБОТКА АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧИ
5)ПРОГРАММЫЙ КОД ПРОЕКТА
6)РЕЗУЛЬТАТ И ДОКАЗАТЕЛЬСТВО ПРАВИЛЬНОСТИ РАБОТЫ ПРОГРАММЫ
1
ЦЕЛЬ РАБОТЫ
1)Обучиться программированию алгоритмов вложенных регулярных циклических структур.
2)Разработать функции для: вычисления значения, построения таблицы значений, ввода данных, вывода данных, главной функции main.
3)Оформить отчет по работе.
ФОРМУЛИРОВКА ЗАДАЧИ №12
Постройте таблицу значений функции f(x, y) и найдите произведение и количество отрицательных значений функции.
1) f(x,y)= x4 + 39*x*y + 958*x2 – 1084*x - 1987
По x отрезок [1.9; 2.1]; шаг h1 = 0.01, по y отрезок [2; 3]; шаг h2 = 0.1
ФОРМАЛИЗАЦИЯ ЗАДАНИЯ
Для реализации задания разработаем следующие пользовательские функции:
•функция f, вычисляющая f(x, y) в заданных точках x, y;
•функция hcycle, формирующая и выводящая таблицу значений f(x, y) на заданных отрезках значений x, y, а также вычисляющее произведение и количество отрицательных значений функции;
•функция Input, выполняющая ввод исходных данных;
2
•функция Output, выводящая найденные количество и произведение отрицательных f(x);
•главная функция main, последовательно вызывающая функции
Input, hcycle и Output.
РАЗРАБОТКА АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧИ
Схема алгоритма f вычисления значения заданной функции в одной точке показана ниже. (см. рис. 1)
Рисунок 1 - схема функции f(x, y)
Схема алгоритма функции hcycle решения задачи и формирования таблицы значений функции f(x, y) изображена ниже. (см. рис. 2)
3
Рисунок 2 – схема алгоритма функции hcycle
4
ПРОГРАММНЫЙ КОД ПРОЕКТА
Программный код проекта приведен ниже (см. рис. 3, 4, 5, 6)
1)#include "hcycle.h"
2)#include "f(x,y).h"
3)#include "inpoutp.h"
5)void main(void)
6){
7)double a, b, h, c, d, h1, cnt, mp;
8)Input(a, b, h, c, d, h1);
9)hcycle(a, b, h, c, d, h1, cnt, mp);
10)Output(cnt, mp);
11)}
Рисунок 3 – программный код файла “main.cpp”
1)#pragma once
2)#include <iostream>
4)using namespace std;
5)void Input(double& a, double& b, double& h, double& c, double& d, double& h1)
6){
7)setlocale(LC_ALL, "rus");
8)cout << "Введите нижнюю границу отрезка по x:\n a = ";
9)cin >> a;
10)cout << "Введите верхнюю границу отрезка по x:\n b = ";
11)cin >> b;
12)cout << "Введите шаг по x:\n h = ";
13)cin >> h;
14)cout << "Введите нижнюю границу отрезка по y:\n a = ";
15)cin >> c;
16)cout << "Введите верхнюю границу отрезка по y:\n b = ";
17)cin >> d;
18)cout << "Введите шаг по y:\n h = ";
19)cin >> h1;
20)}
21)void Output(double& cnt, double& mp)
22){
23)setlocale(LC_ALL, "rus");
24)cout << "Количество отрицательных значений\tf(x, y) = " << cnt << endl;
25)cout << "Произведение отрицательных значений\tf(x, y) = " << mp << endl;
26)}
Рисунок 4 – программный код библиотеки “inpoutp.h”
5
1)#pragma once
2)#include <cmath>
3)double f(double x, double y)
4){
5)double z;
6)z = pow(x, 4) + 39*x*y + 958*pow(x, 2) - 1081*x - 1987;
7)return z;
8)}
Рисунок 5 - программный код библиотеки “f(x).h”
1)#pragma once
2)#include <iostream>
3)#include <cmath>
4)#include "f(x,y).h"
6) using namespace std;
7)
8)void hcycle(float a, float b, float h, float c, float d, float h1, double& cnt, double& mp )
9){
10)setlocale(LC_ALL, "rus");
11)cout << "Таблица значений функции:\n" << "\t|\tx\t|\ty\t|\tz\n";
12)cnt = 0;
13)mp = 1;
14)for (float i = a; i <= b; i += h)
15){
16)for (float k = c; k <= d; k += h1)
17){
18)float x = i;
19)float y = k;
20)double z = f(x,y);
21)if (z < 0)
22){
23) |
cnt++; |
24) |
mp += z; |
25) |
} |
26) |
cout << "\t|\t" << x << "\t|\t" << y << |
|
"\t|\t" << z << "\n"; |
27) |
} |
28) |
|
29) |
} |
30) |
} |
Рисунок 6 – программный код библиотеки “hcycle.h”
6
РЕЗУЛЬТАТ И ДОКАЗАТЕЛЬСТВО ПРАВИЛЬНОСТИ РАБОТЫ ПРОГРАММЫ
Результат выполнения проекта при заданных значениях исходных данных изображены ниже. (см. рис. 7)
Рисунок 7 - результат работы программы
Подставив тестовые данные в уравнение, мы воспользуемся ручным расчетом и увидим, что результаты совпадают.
7