Untitled
unknown
plain_text
9 months ago
9.5 kB
5
Indexable
//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;
}Editor is loading...
Leave a Comment