Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / Laba_varik1_8.1

.docx
Скачиваний:
7
Добавлен:
10.06.2023
Размер:
121.17 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «Московский технический университет связи и информатики»

Кафедра «Информатика»

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

  • файл с главной функцией, которая должна содержать только операторы вызова пользовательских функций (ввода, функции построения таблицы и вывода), причем обмен данными между функциями должен осуществляться через параметры, без использования глобальных переменных.

  1. Выполните проект и получите результаты.

  1. Докажите правильность полученных результатов.

Индивидуальное задание на разработку проекта

Построить таблицу значений 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

Соседние файлы в папке лабы