лабы / Laba_varik1_8.1
.docx
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «Московский технический университет связи и информатики»
Кафедра «Информатика»
Лабораторная работа №8.1
Разработка проекта, решающего задачу
построения таблицы значений функции одной
переменной
по теме
«Циклическое алгоритмические структуры. Регулярные циклические структуры и их программная реализация»
по дисциплине
«Информатика»
Выполнил:
Проверил:
Москва, 2021 г
Общее задание
Общее задание на разработку программного проекта
1)Изучите вопросы программирование алгоритмов регулярных циклических структур.
2)Выберите вариант задания из таблицы 8-1.
3)Проведите формализацию поставленной задачи.
4)Решите задачу вашего индивидуального задания, используя разработанные функции пользователя. Для этого разработайте схемы алгоритмов и программные коды следующих функций:
функции вычисления значения функции y=f(x) одного аргумента в одной точке согласно вашему индивидуальному заданию;
функции построения таблицы значений y=f(x) одного аргумента на заданном отрезке с заданным шагом изменения аргумента, причем использовать в качестве параметра цикла переменную целого типа;
функции ввода исходных данных;
функции вывода результатов;
главной функции main, которая вызывает описанные выше функции для решения поставленной задачи.
5) Создайте консольный проект, содержащий 3 раздельно скомпилированных файла:
файл, содержащий функцию ввода исходных данных и функцию вывода результатов;
файл с функциями вычисления значения функции y=f(x) и построения
таблицы значений y=f(x);
2
файл с главной функцией, которая должна содержать только операторы вызова пользовательских функций (ввода, функции построения таблицы и вывода), причем обмен данными между функциями должен осуществляться через параметры, без использования глобальных переменных.
Выполните проект и получите результаты.
Докажите правильность полученных результатов.
Индивидуальное задание на разработку проекта
Построить таблицу значений y = f(x) и найти количество положительных значений функции при изменении x на отрезке [a; b] с шагом h.
Y = { Отрезок [-4; 4], шаг h = 0.5
( )
Формализация задания
Для реализации задания я создал проект, состоящий из 3-х файлов:
main.cpp – основной файл, содержащий в себе вызов всех функций.
GtPut.cpp – содержит в себе функцию vivod_result – отвечает за вывод результатов вычислений, vivod_summ – отвечающая за вывод суммы положительных результатов.
calc.cpp – содержит в себе все функции, необходимые для расчёта результатов такие, как : opr_vetki – определяет, по какой из 3-х ветвей пойдёт процесс решения. resh_vetv_1, resh_vetv_2 и resh_vetv_3 – отвечающие за решение каждой из ветви.
3
Реализация проекта
Ниже представлена реализация файла main.cpp
Рисунок 1.1 – реализация функции main
По сути, в нём используется только одна функция не работающая с данными: cycle, она состоит из цикла, в котором несколько раз вызывается функция vivod_result. Затем идёт проверка на положительность ответа, если результат больше 0, то к переменной pol_summ прибавляется 1(рис. 1.2).
4
Рисунок 1.2 – Реализация функции cycle.
Программный код проекта
#include <cmath>
void vivod_result(double x, double y);
double otv(double x)
{
double result;
if (x <= 0)
{
result = pow(x, 2) - 1;
}else
if (x > 0 || x <= 1.5)
{
result = cos(x);
}else
if (x > 1.5)
{
result = sin(x - 1);
5
}
return result;
}
bool pol(double result)
{
bool res = 0;
if (result > 0)
{
res = 1;
}
return res;
}
void cycle(int& pol_summ)
{
for (double h = -4; h <= 4; h = h + 0.5)
{
vivod_result(h, otv(h));
pol_summ = pol_summ + pol(otv(h));
}
}
Листинг файла Calc.cpp
#include <iostream>
void vivod_result(double x, double y)
{
std::cout << "\t" << x << "\t" << y << std::endl;
}
void vivod_txt()
{
system("CHCP 1251");
system("CLS");
std::cout << "Таблица результатов:" << std::endl << "\tX:" << "\tY:" <<
std::endl;
}
void vivod_summ(int summ)
{
std::cout << std::endl << "Количество положительных результатов - " << summ;
}
Листинг файла GetPut.cpp
6
#include <iostream>
double otv(double x);
void vivod_result(double x, double y);
void vivod_txt();
void vivod_summ(int sum);
void cycle(int& pol_symm);
bool pol(double result);
int main()
{
int summ = 0;
vivod_txt();
cycle(summ);
vivod_summ(summ);
return 0;
}
Листинг файла main.cpp
Результаты программы
Рисунок 1.3 – результат работы проекта.
Результаты проверки результатов
7
Источники
1. Лекция 16.12.2021
8