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