Загрузка данных
================================================================================
ФАЙЛ 1: tab_func.h
(Положить в папку: "Заголовочные файлы")
================================================================================
#pragma once // защита от повторного включения заголовочного файла
// прототип функции вычисления значения кусочной функции
double calculate_y(double x);
================================================================================
ФАЙЛ 2: tab_func.cpp
(Положить в папку: "Файлы исходного кода")
================================================================================
#include "tab_func.h" // подключение собственного заголовочного файла
#include <cmath> // подключение математических функций (exp, log)
// реализация вычисления кусочной функции для заданного x
double calculate_y(double x)
{
/*предусловие: x - вещественное число (текущая точка аргумента)*/
/*постусловие: функция возвращает вычисленное значение y в зависимости от диапазона x*/
double y; // локальная переменная для результата
if (x < 0.0) // первая ветвь: x < 0
{
y = exp(-x); // экспонента в степени (-x)
}
else if (x <= 4.5) // вторая ветвь: 0 <= x <= 4.5
{
y = 1.0 - log(1.0 + x * x); // вычисление 1 - ln(1 + x^2)
}
else // третья ветвь: x > 4.5
{
y = 2.0 * x; // вычисление 2 * x
}
return y; // возврат полученного значения
}
================================================================================
ФАЙЛ 3: Исходный код.cpp (main.cpp)
(Положить в папку: "Файлы исходного кода")
================================================================================
#include <iostream> // библиотека для потокового ввода-вывода (cin, cout)
#include <iomanip> // библиотека для форматирования таблицы (setw, setprecision, fixed)
#include <clocale> // библиотека для поддержки русского языка
#include "tab_func.h" // подключение нашего заголовочного файла с функцией calculate_y
using namespace std; // использование стандартного пространства имен
int main()
{
/*предусловие: начальная точка x_start, конечная точка x_end и шаг dx вводятся с клавиатуры*/
/*постусловие: на экран выводится таблица значений x и y на заданном интервале*/
setlocale(LC_ALL, "Russian"); // установка русской локали в консоли
double x_start; // начальная точка промежутка табуляции
double x_end; // конечная точка промежутка табуляции
double dx; // шаг изменения аргумента x
double x; // текущее значение аргумента
double y; // текущее значение функции
// ввод граничных параметров и шага
cout << "Введите начальную точку (x_start): ";
cin >> x_start;
cout << "Введите конечную точку (x_end): ";
cin >> x_end;
cout << "Введите шаг табуляции (dx): ";
cin >> dx;
// вывод шапки таблицы
cout << "\n-----------------------------\n";
cout << " x | y \n";
cout << "-----------------------------\n";
cout << fixed; // включение вывода с фиксированной точкой
x = x_start; // инициализация начального значения аргумента перед циклом
// цикл с постусловием do-while для построения таблицы
do
{
y = calculate_y(x); // вызов функции вычисления из отдельного файла tab_func.cpp
// вывод строки таблицы с выравниванием по ширине и 4 знаками после запятой
cout << setw(12) << setprecision(4) << x << " |"
<< setw(13) << setprecision(4) << y << "\n";
x = x + dx; // переход к следующей точке с заданным шагом
}
while (x <= x_end + dx / 2.0); // условие продолжения цикла с защитой от погрешности float
cout << "-----------------------------\n"; // подвал таблицы
system("pause"); // задержка окна консоли для просмотра результатов
return 0; // успешное завершение программы
}