Untitled
//1432-05_Kolpisnkii_AM_Kontrolnaya #include <windows.h> //подключить русский ввод-вывод #include <iostream> //ввод-вывод данных #include <iomanip> //библиотека для форматирования числа #include <math.h> //библиотека math #include <stdlib.h> //функции srand(), rand() #include <cctype> //функции is…() #include <string> //функция strlen() #include <stdio.h> //функция gets() #include <conio.h> //для отрисовки графика #include <fstream> //для операций и чтения и записи using namespace std; //чтобы не писать каждый раз std перед функциями вызываемыми из библиотеки const int MSIZE = 21; int main() { setlocale(0, ""); //отображение кириллицы на экране int mas[MSIZE]; int masx[MSIZE]; int masy[MSIZE]; double y1, y2, x, b, e, d; int w, x10, x10y1, x10y2, yy, xx, N, ys, ys1, yc, yc1, kk; Begin: system("cls"); w = 0; b = 0; d = 0; e = 0; x = 0; cout << "Введите диапазон крайних значения для X для функции sin(e^-x) и cos(e^-x)\n"; cout << "Значение минимум: \n"; cin >> b; cout << "Значение максимумум: \n"; cin >> e; List: cout << endl; do { cout << "Введите желаемое действие: \n"; cout << "1. Вывести таблицу. \n"; cout << "2. Записать результаты в файл. \n"; cout << "3. Вывести график sin. \n"; cout << "4. Вывести график cos. \n"; cout << "5. Ввести новые данные. \n"; cout << "6. Выйти. \n"; cin >> N; if (N == 1) goto Table; if (N == 2) goto Rec; if (N == 3) goto GraphS; if (N == 4) goto GraphC; if (N == 5) goto Begin; } while (N != 6); goto End; GraphC: system("cls"); w = 3; goto Func; GraphS: system("cls"); w = 2; goto Func; Rec: system("cls"); w = 1; goto Func; Table: system("cls"); w = 0; Func: if (b <= 0 || e <= 0) { d = (abs(b) + abs(e)) / 20; } if (b <= 0 && e <= 0) { d = (abs(b) - abs(e)) / 20; } if (b >= 0 && e >= 0) { d = (e - b) / 20; } x = b; if (w == 1) { ofstream out; // поток для записи out.open("D:\\Fun_table.txt"); // окрываем файл для записи if (out.is_open()) { out.precision(4); out << "-------------------------------------------------\n"; out << "| Таблица функции y = sin(e^-x) и y = cos(e^-x) |\n"; out << "-------------------------------------------------\n"; out << "| Значение: | sin(e^-x) | cos(e^-x) |\n"; out << "-------------------------------------------------\n"; } } // вывод значений таблицы на экран cout << "-------------------------------------------------\n"; cout << "| Таблица функции y = sin(e^-x) и y = cos(e^-x) |\n"; cout << "-------------------------------------------------\n"; cout << "| Значение: | sin(e^-x) | cos(e^-x) |\n"; cout << "-------------------------------------------------\n"; for (int i = 1; i <= 21; i++) { y1 = sin(exp(-x)); y2 = cos(exp(-x)); cout.precision(4); cout << "| " << fixed << setw(8) << x << setw(6) << "|" << setw(10) << y1 << setw(6) << "|" << setw(10) << y2 << setw(7) << "|\n"; if (w == 1) { ofstream out("D:\\Fun_table.txt", std::ios::app); if (out.is_open()) { out.precision(4); out << "| " << fixed << setw(8) << x << setw(6) << "|" << setw(10) << y1 << setw(6) << "|" << setw(10) << y2 << setw(7) << "|\n"; } } x = x + d; } cout << "-------------------------------------------------\n"; if (w == 1) { ofstream out("D:\\Fun_table.txt", std::ios::app); if (out.is_open()) { out << "-------------------------------------------------\n"; } out.close(); } if (w == 1) { cout << "\nЗапись в файл произведена" << endl; } if (w == 2 || w == 3) goto Graph1; goto List; Graph1: //расчет графиков с масштабированием вывода значений по осям if (w == 2 || w == 3) { x = b; cout << endl; cout << endl; for (int i = 0; i < MSIZE; ++i) { y1 = sin(exp(-x)); y2 = cos(exp(-x)); x10 = x * 10.0; x10y1 = y1 * 10.0; x10y2 = y2 * 10.0; // увеличиваем значения в 10 раз, чтобы привязать масштаб десятичных к единицам masx[i] = x10; mas[i] = x10y1; masy[i] = x10y2; x = x + d; } int max = masx[0], min = masx[0]; // высчитываем значения минимума и максимума по Х for (int i = 0; i < MSIZE; ++i) { if (masx[i] < min) { min = masx[i]; } if (masx[i] > max) { max = masx[i]; } } for (int i = 0; i < MSIZE; ++i) { masx[i] = (i * 4); //задаем шаг Х по горизонтали не меньше 3, не больше 4.5 - масштаб будет от 60 до 90 клеток if (mas[i] > 0) { // привязываем к Y значения синуса ys = 10.0 - mas[i]; mas[i] = ys; } if (mas[i] <= 0) { ys1 = abs(mas[i]); mas[i] = ys1 + 10; } if (masy[i] > 0) { // привязываем к Y значения косинуса yc = 10.0 - masy[i]; masy[i] = yc; } if (masy[i] <= 0) { yc1 = abs(masy[i]); masy[i] = yc1 + 10; } } } // вывод самих графиков sin и cos if (w == 2) { int k = -3; kk = 13, cout << setw(9) << "^ Ось Y" << setw(44) << "y = sin(e^-x)" << "\n"; for (int i = -3; i < 24; ++i) { if (k % 10 == 0) { cout << setw(2) << (kk / 10) << "|"; } if (k % 10 != 0) { cout << setw(3) << "|"; } k++; kk--; for (int j = 0; j < 86; ++j) { for (int ms = 0; ms < 21; ++ms) { yy = mas[ms]; xx = masx[ms]; if (j == xx && i == yy) { cout << "*"; } } if (j == 84 && i == 10) { cout << setw(10) << "-> Ось Х"; } else { cout << " "; } } cout << endl; } cout << " "; for (int j = 0; j < 86; ++j) { cout << "-"; } cout << "-> Ось Х \n"; cout.precision(1); cout << setw(5) << b << setw(44) << e - d * 10 << setw(40) << e << "\n"; cout << endl; cout << endl; cout << endl; goto List; } if (w == 3) { int g = -3, gg = 13; cout << setw(9) << "^ Ось Y" << setw(44) << "y = cos(e^-x)" << "\n"; for (int i = -3; i < 24; ++i) { if (g % 10 == 0) { cout << setw(2) << (gg / 10) << "|"; } if (g % 10 != 0) { cout << setw(3) << "|"; } g++; gg--; for (int j = 0; j < 86; ++j) { for (int ms = 0; ms < 21; ++ms) { yy = masy[ms]; xx = masx[ms]; if (j == xx && i == yy) { cout << "*"; } } if (j == 84 && i == 10) { cout << setw(10) << "-> Ось Х"; } else { cout << " "; } } cout << endl; } cout << " "; for (int j = 0; j < 86; ++j) { cout << "-"; } cout << "-> Ось Х \n"; cout.precision(1); cout << setw(5) << b << setw(44) << e - d * 10 << setw(40) << e << "\n"; cout << endl; cout << endl; cout << endl; } goto List; End: return 0; }
Leave a Comment