Информатика, лабораторная работа №8. Лабораторная работа №8.1. Общее задание на разработку программного проекта
Скачать 0.68 Mb.
|
Общее задание на разработку программного проекта Изучите вопросы программирования алгоритмов регулярных циклических структур; Выберите вариант задания. Проведите формализацию поставленной задачи. Решите задачу вашего индивидуального задания, используя разработанные функции пользователя. Для этого разработайте схемы алгоритмов и программные коды следующих функций: функция вычисления значения функции y = f(x) одного аргумента в одной точке согласно вашему индивидуальному заданию; функцию построения таблицы значений y = f(x) одного аргумента на заданном отрезке с заданным шагом изменения аргумента, причем использовать в качестве параметра цикла переменную целого типа; функция ввода исходных данных; функция вывода результатов; главной функции main, которая вызывает описанные выше функции для решения поставленной задачи. Создайте консольный проект, содержащий 3 раздельно откомпилированных файла: файл, содержащий функцию ввода исходных данных и функцию вывода результатов; файл с функциями вычисления значения функции y = f(x) и построения таблицы значений y = f(x); файл с главной функцией, которая должна содержать только операторы вызова пользовательских функций (ввода, функции построения таблицы и вывода), причем обмен данными между функциями должен осуществляться через параметры, без использования глобальных переменных. Выполните проект и получите результаты. Докажите правильность полученных результатов. Индивидуальное задание на разработку программного проекта
Формализация и уточнение задания Для реализации задания разработаны следующие пользовательские функции: функция func, вычисляющая f(x) в заданной точке x; функция regCikl, формирующая и выводящая таблицу значений f(x) на заданном отрезке значений x, а также определяющая наименьшее значение заданной функции на этом же отрезке; функция get, выполняющая ввод исходных данных.: границ отрезка [a;b] и шага h; функция put, выводящая найденное наименьшее значение функции f(x); главная функция main, последовательно вызывающая функцию get, regCikl, put. Для представления вещественных чисел использован тип данных с обычной точностью float. Разработка функциональных алгоритмов Схема алгоритма функции func вычисления значения заданной функции в одной точке (рисунок 1): Рисунок 1 - функция func Схема алгоритма RegCikl решения задачи и формирования таблицы значений функции y=f(x) на отрезке [a; b] с шагом h изображена на рисунке 2: Рисунок 2 - схема алгоритма RegCikl Программный код проекта Программный код проекта представлен ниже: Файл GetPut.cpp: // Файл GetPut.cpp с функциями ввода и вывода: #include using namespace std; void Get(float& a, float& b, float& h) { setlocale(LC_ALL, "rus"); cout << "Введите нижнюю границу отрезка -> "; cin >> a; cout << "Введите верхнюю границу отрезка ->"; cin >> b; cout << "Введите шаг таблицы ->"; cin >> h; } void Put(float P) { setlocale(LC_ALL, "rus"); cout << endl << "Произведение значений функция равно: " << P << endl; } Файл Resh.cpp: #include #include "cmath" using namespace std; float func(float x); void RegCikl(float& a, float& b, float& h, float& P, float& PMin, float& PMax) { setlocale(LC_ALL, "rus"); int n = int((b - a + h / 2) / h) + 1; P = 1; PMax = 1E308; PMin = -1E308; float x, y; cout << "Таблица значений функции" << endl; cout << "\tx\t\ty" << endl; for (int i = 1; i <= n; i++) { x = a + (i - 1) * h; y = func(x); P = P * y; if (P > PMax) PMax = P; if (P < PMin) PMin = P;; cout << "\t" << x << "\t\t" << y << endl; } } float func(float x) { if (x >= 0 && x <= 5) return 5*exp(x); else if (x > 5) return 2 * sin(x); else if (x < 0) return abs(x); } Файл main.cpp: // Файл main.cpp: #include void Get(float& a, float& b, float& h); void Put(float P); void RegCikl(float& a, float& b, float& h, float& P, float& PMin, float& PMax); int main() { float a, b, h, P, PMin, PMax; Get(a, b, h); RegCikl(a, b, h, P, PMin, PMax); Put(P); system("PAUSE"); } Результаты выполнения проекта Результаты выполнения проекта при заданных значениях исходных данных приведены на рисунке 3: Рисунок 3 - результаты выполнения проекта Программа корректно выводит таблицу с заданным шагом и считает значения функции. |