Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********************************************************************************************
- * Project name: LR2 *
- * Project type : Win32 Console Application *
- * File name : LR2.cpp *
- * Language : CPP, MS VS 2019 *
- * Programmers : Корольков Максим Дмитриевич, Ляпин Георгий Алексеевич, М3О-110Б-19 *
- * Modified by : Корольков Максим Дмитриевич *
- * Created : 10.10.2019 *
- * Last revision : 14.10.2019 *
- * Comments : Табулирование функций *
- ********************************************************************************************/
- #include <iostream>
- #include <math.h>
- #include <iomanip>
- using namespace std;
- double F(double x) //ФУНКЦИЯ F(x) = (x - 1)^3
- {
- double result = pow(x - 1, 3);
- return result;
- }//F
- double G(double x) //ФУНКЦИЯ G(x) = (x + 5)^3 / [1 + sin^2(x)]
- {
- double chisl = pow(x + 5, 3);
- double znam = 1 + pow(sin(x), 2);
- double result = chisl / znam;
- return result;
- }//G
- int main()
- {
- setlocale(LC_ALL, "RUSSIAN"); //ПОДКЛЮЧЕНИЕ РУССКОГО ЯЗЫКА
- system("color F0"); //ИЗМЕНЕНИЕ ЦВЕТА КОНСОЛИ НА БЕЛЫЙ
- //ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
- double A; //ЛЕВАЯ ГРАНИЦА ОТРЕЗКА
- double B; //ПРАВАЯ ГРАНИЦА ОТРЕЗКА
- double x; //АРГУМЕНТ
- double H; //ШАГ ПРИРАЩЕНИЯ АРГУМЕНТА X
- int N; //ЧИСЛО ИНТЕРВАЛОВ
- //ПОДГОТОВКА ЭЛЕМЕНТОВ ПСЕВДОГРАФИКИ
- const char VerticalLine = (char)186; //"║" - ВЕРТИКАЛЬНАЯ ЛИНИЯ
- const char HorizontalLine = (char)205; //"═" - ГОРИЗОНТАЛЬНАЯ ЛИНИЯ
- const char TopLeftCorner = (char)201; //"╔" - ЛЕВЫЙ ВЕРХНИЙ УГОЛ
- const char TopRightCorner = (char)187; //"╗" - ПРАВЫЙ ВЕРХНИЙ УГОЛ
- const char BottomLeftCorner = (char)200; //"╚" - ЛЕВЫЙ НИЖНИЙ УГОЛ
- const char BottomRightCorner = (char)188; //"╝" - ПРАВЫЙ НИЖНИЙ УГОЛ
- const char LeftJunction = (char)185; //"╣" - ПОВОРОТ ВЛЕВО
- const char RightJunction = (char)204; //"╠" - ПОВОРОТ ВПРАВО
- const char BottomJunction = (char)203; //"╦" - ПОВОРОТ ВНИЗ
- const char TopJunction = (char)202; //"╩" - ПОВОРОТ ВВЕРХ
- const char CrossJunction = (char)206; //"╬" - ПЕРЕКРЕСТОК
- const int WIDTH = 20; // - ШИРИНА ЯЧЕЙКИ
- //ПОДГОТОВКА ПРОГРАММЫ К РАБОТЕ
- //ЗАДАНИЕ ГРАНИЦ ОТРЕЗКА
- //ВВЕДЕНИЕ ПОЛЬЗОВАТЕЛЕМ ЗНАЧЕНИЯ A
- cout << "Введите значение A - левой границы отрезка: " << endl;
- cin >> A;
- cout << "Введенное значение A = " << A << endl;
- //ВВЕДЕНИЕ ПОЛЬЗОВАТЕЛЕМ ЗНАЧЕНИЯ B
- cout << "Введите значение B - правой границы отрезка: " << endl;
- cin >> B;
- cout << "Введенное значение B = " << B << endl;
- //ПРОВЕРКА КОРРЕКТНОСТИ ВВЕДЕННЫХ ГРАНИЦ ОТРЕЗКА
- if (A > B) //ЕСЛИ ЛЕВАЯ ГРАНИЦА БОЛЬШЕ ПРАВОЙ
- {
- //ВЫВОД СООБЩЕНИЯ
- cout << "Ошибка! \aВведенная левая граница A = " << A
- << " больше введенной правой границы B = " << B
- << ". \n\n\tПоменяем переменные местами..." << endl;
- //СМЕНА МЕСТАМИ ПРАВОЙ И ЛЕВОЙ ГРАНИЦЫ
- double Max = A;
- A = B;
- B = Max;
- //ВЫВОД НОВЫХ ГРАНИЦ
- cout << "\tНовая левая граница A = " << A
- << "\n\tНовая правая граница B = " << B << endl;
- }//if
- //ПРОВЕРКА НА РАВЕНСТВО ЛЕВОЙ И ПРАВОЙ ГРАНИЦ ОТРЕЗКА
- if (A == B) //ЕСЛИ ЛЕВАЯ ГРАНИЦА РАВНА ПРАВОЙ
- {
- //ВЫВОД СООБЩЕНИЯ
- cout << "Внимание! \aВведенная левая граница A = " << A
- << " равна введенной правой границе B = " << B
- << ".\nРазбить отрезок [A, B] на интервалы невозможно."
- << ".\nРасчет значений функций F и G в точке A..." << endl;
- //ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ H И N
- N = 0;
- H = 0;
- }
- else //ЕСЛИ ЛЕВАЯ ГРАНИЦА НЕ РАВНА ПРАВОЙ
- {
- //ВВЕДЕНИЕ ПОЛЬЗОВАТЕЛЕМ ЗНАЧЕНИЯ N
- cout << "Введите значение N - числа интервалов, на которые разбить отрезок: " << endl;
- cin >> N;
- cout << "Введенное значение N = " << N << endl;
- //ПРОВЕРКА КОРРЕКТНОСТИ ВВЕДЕННОГО N
- if (N <= 0)
- {
- //ВЫВОД СООБЩЕНИЯ ОБ ОШИБКЕ
- cout << "Ошибка! \aВведенное значение N = " << N
- << " некорректно. Введите значение, удовлетворяющее условию: \n\tN > 0." << endl;
- system("pause");
- return 1; //ВЫХОД ИЗ ПРОГРАММЫ
- }//if
- //ВЫЧИСЛЕНИЕ ШАГА ПРИРАЩЕНИЯ АРГУМЕНТА H
- H = (B - A) / N;
- }//if..else
- cout << "\n\n\n"; //ОТСТУП
- setlocale(LC_ALL, "C"); //ОТКЛЮЧЕНИЕ РУССКОГО ЯЗЫКА
- //КОНЕЦ ПОДГОТОВКИ ПРОГРАММЫ К РАБОТЕ
- //НАЧАЛО ВЫВОДА ЗАГОЛОВКА ТАБЛИЦЫ
- // ╔══╦══╦══╗
- cout << TopLeftCorner;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << BottomJunction;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << BottomJunction;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << TopRightCorner << endl;
- // ║ ║ ║
- cout << VerticalLine << setw(WIDTH) << right << "x"
- << VerticalLine << setw(WIDTH) << right << "F(x)"
- << VerticalLine << setw(WIDTH) << right << "G(x)"
- << VerticalLine << endl;
- // ╠══╬══╬══╣
- cout << RightJunction;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << CrossJunction;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << CrossJunction;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << LeftJunction << endl;
- // ║ ║ ║
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine << endl;
- //КОНЕЦ ВЫВОДА ЗАГОЛОВКА ТАБЛИЦЫ
- //РАСЧЕТ И ВЫВОД ЗНАЧЕНИЙ ТАБЛИЦЫ
- for (int i = 0; i < N + 1; i++)
- {
- x = A + i * H; //ВЫЧИСЛЕНИЕ НОВОЙ ТОЧКИ x(i)
- //НАЧАЛО ВЫВОДА СТРОКИ ТАБЛИЦЫ
- // ║ x ║ F(x) ║ G(x) ║
- cout << VerticalLine << setw(WIDTH) << right << x
- << VerticalLine << setw(WIDTH) << right << F(x)
- << VerticalLine << setw(WIDTH) << right << G(x)
- << VerticalLine << endl;
- //КОНЕЦ ВЫВОДА СТРОКИ ТАБЛИЦЫ
- if (i == N) break; //ЕСЛИ СТРОКА ПОСЛЕДНЯЯ, ТО ПЕРЕХОД НЕ НУЖЕН
- //НАЧАЛО ПОДГОТОВКИ К ПЕРЕХОДУ НА СЛЕДУЮЩУЮ СТРОКУ ТАБЛИЦЫ
- // ║ ║ ║
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine << endl;
- // ╠══╬══╬══╣
- cout << RightJunction;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << CrossJunction;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << CrossJunction;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << LeftJunction << endl;
- // ║ ║ ║
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine << endl;
- //КОНЕЦ ПОДГОТОВКИ К ПЕРЕХОДУ
- }//for
- //НАЧАЛО ВЫВОДА ОКОНЧАНИЯ ТАБЛИЦЫ
- // ║ ║ ║
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine;
- for (int i = 0; i < WIDTH; i++) cout << " "; //for
- cout << VerticalLine << endl;
- // ╚══╩══╩══╝
- cout << BottomLeftCorner;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << TopJunction;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << TopJunction;
- for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
- cout << BottomRightCorner << endl;
- //КОНЕЦ ВЫВОДА ОКОНЧАНИЯ ТАБЛИЦЫ
- system("pause"); //ЗАДЕРЖКА ЭКРАНА
- return 0;
- } //main
- /*********************************** End of LR2.cpp file ***********************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement