Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.93 KB | None | 0 0
  1. /********************************************************************************************
  2. * Project name: LR2 *
  3. * Project type : Win32 Console Application *
  4. * File name : LR2.cpp *
  5. * Language : CPP, MS VS 2019 *
  6. * Programmers : Корольков Максим Дмитриевич, Ляпин Георгий Алексеевич, М3О-110Б-19 *
  7. * Modified by : Корольков Максим Дмитриевич *
  8. * Created : 10.10.2019 *
  9. * Last revision : 14.10.2019 *
  10. * Comments : Табулирование функций *
  11. ********************************************************************************************/
  12.  
  13. #include <iostream>
  14. #include <math.h>
  15. #include <iomanip>
  16. using namespace std;
  17.  
  18. double F(double x) //ФУНКЦИЯ F(x) = (x - 1)^3
  19. {
  20. double result = pow(x - 1, 3);
  21. return result;
  22. }//F
  23.  
  24. double G(double x) //ФУНКЦИЯ G(x) = (x + 5)^3 / [1 + sin^2(x)]
  25. {
  26. double chisl = pow(x + 5, 3);
  27. double znam = 1 + pow(sin(x), 2);
  28. double result = chisl / znam;
  29. return result;
  30. }//G
  31.  
  32.  
  33. int main()
  34. {
  35. setlocale(LC_ALL, "RUSSIAN"); //ПОДКЛЮЧЕНИЕ РУССКОГО ЯЗЫКА
  36. system("color F0"); //ИЗМЕНЕНИЕ ЦВЕТА КОНСОЛИ НА БЕЛЫЙ
  37.  
  38. //ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
  39. double A; //ЛЕВАЯ ГРАНИЦА ОТРЕЗКА
  40. double B; //ПРАВАЯ ГРАНИЦА ОТРЕЗКА
  41. double x; //АРГУМЕНТ
  42. double H; //ШАГ ПРИРАЩЕНИЯ АРГУМЕНТА X
  43.  
  44. int N; //ЧИСЛО ИНТЕРВАЛОВ
  45.  
  46. //ПОДГОТОВКА ЭЛЕМЕНТОВ ПСЕВДОГРАФИКИ
  47. const char VerticalLine = (char)186; //"║" - ВЕРТИКАЛЬНАЯ ЛИНИЯ
  48. const char HorizontalLine = (char)205; //"═" - ГОРИЗОНТАЛЬНАЯ ЛИНИЯ
  49. const char TopLeftCorner = (char)201; //"╔" - ЛЕВЫЙ ВЕРХНИЙ УГОЛ
  50. const char TopRightCorner = (char)187; //"╗" - ПРАВЫЙ ВЕРХНИЙ УГОЛ
  51. const char BottomLeftCorner = (char)200; //"╚" - ЛЕВЫЙ НИЖНИЙ УГОЛ
  52. const char BottomRightCorner = (char)188; //"╝" - ПРАВЫЙ НИЖНИЙ УГОЛ
  53. const char LeftJunction = (char)185; //"╣" - ПОВОРОТ ВЛЕВО
  54. const char RightJunction = (char)204; //"╠" - ПОВОРОТ ВПРАВО
  55. const char BottomJunction = (char)203; //"╦" - ПОВОРОТ ВНИЗ
  56. const char TopJunction = (char)202; //"╩" - ПОВОРОТ ВВЕРХ
  57. const char CrossJunction = (char)206; //"╬" - ПЕРЕКРЕСТОК
  58.  
  59. const int WIDTH = 20; // - ШИРИНА ЯЧЕЙКИ
  60.  
  61.  
  62. //ПОДГОТОВКА ПРОГРАММЫ К РАБОТЕ
  63.  
  64. //ЗАДАНИЕ ГРАНИЦ ОТРЕЗКА
  65.  
  66. //ВВЕДЕНИЕ ПОЛЬЗОВАТЕЛЕМ ЗНАЧЕНИЯ A
  67. cout << "Введите значение A - левой границы отрезка: " << endl;
  68. cin >> A;
  69. cout << "Введенное значение A = " << A << endl;
  70.  
  71. //ВВЕДЕНИЕ ПОЛЬЗОВАТЕЛЕМ ЗНАЧЕНИЯ B
  72. cout << "Введите значение B - правой границы отрезка: " << endl;
  73. cin >> B;
  74. cout << "Введенное значение B = " << B << endl;
  75.  
  76.  
  77. //ПРОВЕРКА КОРРЕКТНОСТИ ВВЕДЕННЫХ ГРАНИЦ ОТРЕЗКА
  78. if (A > B) //ЕСЛИ ЛЕВАЯ ГРАНИЦА БОЛЬШЕ ПРАВОЙ
  79. {
  80. //ВЫВОД СООБЩЕНИЯ
  81. cout << "Ошибка! \aВведенная левая граница A = " << A
  82. << " больше введенной правой границы B = " << B
  83. << ". \n\n\tПоменяем переменные местами..." << endl;
  84.  
  85. //СМЕНА МЕСТАМИ ПРАВОЙ И ЛЕВОЙ ГРАНИЦЫ
  86. double Max = A;
  87. A = B;
  88. B = Max;
  89.  
  90. //ВЫВОД НОВЫХ ГРАНИЦ
  91. cout << "\tНовая левая граница A = " << A
  92. << "\n\tНовая правая граница B = " << B << endl;
  93. }//if
  94.  
  95. //ПРОВЕРКА НА РАВЕНСТВО ЛЕВОЙ И ПРАВОЙ ГРАНИЦ ОТРЕЗКА
  96. if (A == B) //ЕСЛИ ЛЕВАЯ ГРАНИЦА РАВНА ПРАВОЙ
  97. {
  98. //ВЫВОД СООБЩЕНИЯ
  99. cout << "Внимание! \aВведенная левая граница A = " << A
  100. << " равна введенной правой границе B = " << B
  101. << ".\nРазбить отрезок [A, B] на интервалы невозможно."
  102. << ".\nРасчет значений функций F и G в точке A..." << endl;
  103.  
  104. //ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ H И N
  105. N = 0;
  106. H = 0;
  107. }
  108. else //ЕСЛИ ЛЕВАЯ ГРАНИЦА НЕ РАВНА ПРАВОЙ
  109. {
  110. //ВВЕДЕНИЕ ПОЛЬЗОВАТЕЛЕМ ЗНАЧЕНИЯ N
  111. cout << "Введите значение N - числа интервалов, на которые разбить отрезок: " << endl;
  112. cin >> N;
  113. cout << "Введенное значение N = " << N << endl;
  114.  
  115. //ПРОВЕРКА КОРРЕКТНОСТИ ВВЕДЕННОГО N
  116. if (N <= 0)
  117. {
  118. //ВЫВОД СООБЩЕНИЯ ОБ ОШИБКЕ
  119. cout << "Ошибка! \aВведенное значение N = " << N
  120. << " некорректно. Введите значение, удовлетворяющее условию: \n\tN > 0." << endl;
  121. system("pause");
  122. return 1; //ВЫХОД ИЗ ПРОГРАММЫ
  123. }//if
  124.  
  125. //ВЫЧИСЛЕНИЕ ШАГА ПРИРАЩЕНИЯ АРГУМЕНТА H
  126. H = (B - A) / N;
  127. }//if..else
  128.  
  129. cout << "\n\n\n"; //ОТСТУП
  130. setlocale(LC_ALL, "C"); //ОТКЛЮЧЕНИЕ РУССКОГО ЯЗЫКА
  131.  
  132. //КОНЕЦ ПОДГОТОВКИ ПРОГРАММЫ К РАБОТЕ
  133.  
  134.  
  135. //НАЧАЛО ВЫВОДА ЗАГОЛОВКА ТАБЛИЦЫ
  136.  
  137. // ╔══╦══╦══╗
  138.  
  139. cout << TopLeftCorner;
  140. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  141. cout << BottomJunction;
  142. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  143. cout << BottomJunction;
  144. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  145. cout << TopRightCorner << endl;
  146.  
  147. // ║ ║ ║
  148.  
  149. cout << VerticalLine << setw(WIDTH) << right << "x"
  150. << VerticalLine << setw(WIDTH) << right << "F(x)"
  151. << VerticalLine << setw(WIDTH) << right << "G(x)"
  152. << VerticalLine << endl;
  153.  
  154. // ╠══╬══╬══╣
  155.  
  156. cout << RightJunction;
  157. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  158. cout << CrossJunction;
  159. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  160. cout << CrossJunction;
  161. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  162. cout << LeftJunction << endl;
  163.  
  164. // ║ ║ ║
  165.  
  166. cout << VerticalLine;
  167. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  168. cout << VerticalLine;
  169. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  170. cout << VerticalLine;
  171. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  172. cout << VerticalLine << endl;
  173.  
  174. //КОНЕЦ ВЫВОДА ЗАГОЛОВКА ТАБЛИЦЫ
  175.  
  176. //РАСЧЕТ И ВЫВОД ЗНАЧЕНИЙ ТАБЛИЦЫ
  177. for (int i = 0; i < N + 1; i++)
  178. {
  179. x = A + i * H; //ВЫЧИСЛЕНИЕ НОВОЙ ТОЧКИ x(i)
  180.  
  181. //НАЧАЛО ВЫВОДА СТРОКИ ТАБЛИЦЫ
  182.  
  183. // ║ x ║ F(x) ║ G(x) ║
  184. cout << VerticalLine << setw(WIDTH) << right << x
  185. << VerticalLine << setw(WIDTH) << right << F(x)
  186. << VerticalLine << setw(WIDTH) << right << G(x)
  187. << VerticalLine << endl;
  188.  
  189. //КОНЕЦ ВЫВОДА СТРОКИ ТАБЛИЦЫ
  190.  
  191. if (i == N) break; //ЕСЛИ СТРОКА ПОСЛЕДНЯЯ, ТО ПЕРЕХОД НЕ НУЖЕН
  192.  
  193. //НАЧАЛО ПОДГОТОВКИ К ПЕРЕХОДУ НА СЛЕДУЮЩУЮ СТРОКУ ТАБЛИЦЫ
  194.  
  195. // ║ ║ ║
  196.  
  197. cout << VerticalLine;
  198. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  199. cout << VerticalLine;
  200. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  201. cout << VerticalLine;
  202. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  203. cout << VerticalLine << endl;
  204.  
  205. // ╠══╬══╬══╣
  206.  
  207. cout << RightJunction;
  208. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  209. cout << CrossJunction;
  210. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  211. cout << CrossJunction;
  212. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  213. cout << LeftJunction << endl;
  214.  
  215. // ║ ║ ║
  216.  
  217. cout << VerticalLine;
  218. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  219. cout << VerticalLine;
  220. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  221. cout << VerticalLine;
  222. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  223. cout << VerticalLine << endl;
  224.  
  225. //КОНЕЦ ПОДГОТОВКИ К ПЕРЕХОДУ
  226.  
  227. }//for
  228.  
  229.  
  230. //НАЧАЛО ВЫВОДА ОКОНЧАНИЯ ТАБЛИЦЫ
  231.  
  232. // ║ ║ ║
  233.  
  234. cout << VerticalLine;
  235. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  236. cout << VerticalLine;
  237. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  238. cout << VerticalLine;
  239. for (int i = 0; i < WIDTH; i++) cout << " "; //for
  240. cout << VerticalLine << endl;
  241.  
  242. // ╚══╩══╩══╝
  243.  
  244. cout << BottomLeftCorner;
  245. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  246. cout << TopJunction;
  247. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  248. cout << TopJunction;
  249. for (int i = 0; i < WIDTH; i++) cout << HorizontalLine; //for
  250. cout << BottomRightCorner << endl;
  251.  
  252. //КОНЕЦ ВЫВОДА ОКОНЧАНИЯ ТАБЛИЦЫ
  253.  
  254. system("pause"); //ЗАДЕРЖКА ЭКРАНА
  255. return 0;
  256. } //main
  257.  
  258. /*********************************** End of LR2.cpp file ***********************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement