Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
8.7 kB
1
Indexable
Never
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <cmath>
// #include <windows.h>
// #include <conio.h>
#include <time.h>
#include <stdio.h>
#include <fstream>
#include <string>
using namespace std;
int Decoder(string a) {
	int j = a.length();
	a += "000";
	int NUMBER = 0;
	int x = 0, y = 0, z = 0, t = 0,
		kv = 0, kl = 0, kd = 0, // критерий неповторяемости 5,50,500
		k2 = 0, // критерий для вылета
		k3 = 1001; // критерий следования цифр по убыванию, изначально ставлю максимум, чтобы считалось первое число
	for (int i = 0; i < j; i++) {
		switch (a[i]) {
		case 73: x = 1; break; // I
		case 86: x = 5; kv = kv + 1;  break; // V
		case 88: x = 10; break; // X
		case 76: x = 50; kl = kl + 1; break; // L
		case 67: x = 100; break; // C
		case 68: x = 500; kd = kd + 1; break; // D
		case 77: x = 1000; break; // M
		}
		switch (a[i + 1]) {
		case 48: y = 0; break; // 0 
		case 73: y = 1; break; // I
		case 86: y = 5; break; // V
		case 88: y = 10; break; // X
		case 76: y = 50; break; // L
		case 67: y = 100; break; // C
		case 68: y = 500; break; // D
		case 77: y = 1000; break; // M
		}
		switch (a[i + 2]) {
		case 48: z = 0; break; // 0 
		case 73: z = 1; break; // I
		case 86: z = 5; break; // V
		case 88: z = 10; break; // X
		case 76: z = 50; break; // L
		case 67: z = 100; break; // C
		case 68: z = 500; break; // D
		case 77: z = 1000; break; // M
		}
		switch (a[i + 3]) {
		case 48: t = 0; break; // 0 
		case 73: t = 1; break; // I
		case 86: t = 5; break; // V
		case 88: t = 10; break; // X
		case 76: t = 50; break; // L
		case 67: t = 100; break; // C
		case 68: t = 500; break; // D
		case 77: t = 1000; break; // M
		}
		if (x < y) {
			NUMBER = NUMBER - x;
			k3 = x;
		}
		else if (y < k3) { NUMBER = NUMBER + x; //следующее за тем, из которого вычли
		}
		else { k2 = k2 + 1; } // если число не по убыванию, то делаю ошибку (IXI, LCC - нельзя)
		if (y - x == x) { k2 = k2 + 1; } //проблема VX, LC
		if ((x < z && y < z) 
			or (kl > 1) or (kd > 1) or (kv >1)
			or ((x == y) && (y == z) && (z == t) && (t == x)) // критерий не повторения 4 цифр подряд
		    or (k2>0)) {
			cout << "Некорректная запись числа" << endl;
			return (0);
		}
	}
	return (NUMBER);
}

int underline(int i) {
	for (int j = 0; j < i; j++) {
		cout << " ";
	}
	cout << endl;
	return 0;
}
int star() {
	for (int j = 0; j < 8; j++) {
		cout << "*";
	}
	return 0;
}
using namespace std;
float length(float a1, float a2, float b1, float b2) {
	float len;
	len = sqrt(pow((a1 - b1), 2) + pow((a2 - b2), 2));
	return (len);
}
float circle() {
	float r1 = 0, r2 = 0, O1 = 0, O2 = 0, R = 0;
	double S = 0;
	cout << "Enter the center`s coordinates (x, y)" << endl;
	cin >> O1 >> O2;
	cout << "Enter the coordinates of any point on the circle (x, y)" << endl;
	cin >> r1 >> r2;
	R = length(O1, O2, r1, r2);
	if (R > 0) {
		S = 3.14 * R * R;
		cout << "S = pi * r^2" << endl << "S = " << "3.14" << "*" << R << "*" << R << " = " << S;
	}
	else { cout << "Such circle does not exist"; }
	return 0;
}
float rectangle() {
	float S, a1, a2, b1, b2, c1, c2, R1, R2, R3;
	cout << "Enter the coordinates of the first apex of your rectangle (x, y)" << endl;
	cin >> a1 >> a2;
	cout << "Enter the coordinates of the second apex of your rectangle (x, y)" << endl;
	cin >> b1 >> b2;
	cout << "Enter the coordinates of the third apex of your rectangle (x, y)" << endl;
	cin >> c1 >> c2;
	R1 = length(a1, a2, b1, b2);
	R2 = length(a1, a2, c1, c2);
	R3 = length(b1, b2, c1, c2);
	if (R1 > 0 && R2 > 0 && R3 > 0) {
		float minimum = min(min(R1, R2), R3);
		float maximum = max(max(R1, R2), R3);
		float L = R1 + R2 + R3 - (minimum + maximum);
		S = minimum * L;
		cout << "S = a * b" << endl << "S = " << minimum << "*" << L << " = " << S;
	}
	else { cout << "Such rectangle does not exist"; }
	return 0;
}
float triangle() {
	float S, a1, a2, b1, b2, c1, c2, L1, L2, L3, p;
	cout << "Enter the coordinates of the first apex of your triangle (x, y)" << endl;
	cin >> a1 >> a2;
	cout << "Enter the coordinates of the second apex of your triangle (x, y)" << endl;
	cin >> b1 >> b2;
	cout << "Enter the coordinates of the third apex of your triangle (x, y)" << endl;
	cin >> c1 >> c2;
	L1 = length(a1, a1, b1, b2);
	L2 = length(a1, a2, c1, c2);
	L3 = length(b1, b2, c1, c2);
	if ((L1 + L2 > L3) and (L1 + L3 > L2) and (L2 + L3 > L1)) {
		p = (L1 + L2 + L3) * 0.5;
		S = sqrt(p * (p - L1) * (p - L2) * (p - L3));
		cout << "S = sqrt(p * (p - a) * (p - b) * (p - c))" << endl;
		cout << "p = " << p << endl;
		cout << "S = sqrt(" << p << " * (" << p << "-" << L1 << ")" << " * (" << p << "-" << L2 << ")" << " * (" << p << "-" << L3 << "))" << " = " << S;
	}
	else { cout << "Such triangle does not exist"; }
	return 0;
}
int sign(float a) {
	if (a > 0) { cout << 1; }
	if (a < 0) { cout << -1; }
	if (a == 0) { cout << 0; }
	return 0;
}
int main()
{
	// string b;
	string abc = "file_4.txt";
	ofstream fout;
	ifstream fin;
    int number_task=0;
    int out = 1, Y, SH, L;
    float a, b, c, d, e, f, x, D;
while(out){

    switch (number_task)
    {
    case 0:
        cout<< "\n\nInput number task:\n\n";
        cout<<"[1] Задание.\n[2] Задание.\n[3] Задание.\n[4] Задание.\n[5] Задание.\n";
        cin>> number_task;
        break;
    case 1:
        

        fout.open(abc);
        cout << "Введите 10 вещественных чисел в строчку через пробел" << endl;
            fout.getline (cin, b);
            fout << b;
        fout.close();
        fin.open(a);
        if (!fin.is_open()) {
            cout << "Ошибка" << endl;
        }
        else {
            float S1, S2 = 0;
            while (fin >> S1)
            {
                S2 = S2 + S1;
            }
            fin.close();
            cout << S2;
        }
        number_task = 0;
        break;
//     case 2:
//         ;
//         	float x;
// 	cout << "Введите число:" << endl;
// 		cin >> x;
// 	sign(x);
//         number_task = 0;
//         break;
//     case 3:
//         char x;
//         cout << "Введите первую букву вашей фигуры:" << "\n" "О - окружность" << "\n" "П - прямоугольник" << "\n" "Т - треугольник" << endl;
//         cin >> x;
//         switch (x) {
//         case -114: circle(); break;
//         case -113: rectangle(); break;
//         case -110: triangle(); break;
//         }
//         number_task = 0;
//         break;
//     case 4:
//         	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //
// 	setlocale(0, "");
// 	int k = 0;
// 	for (int j = 0; j < 6; j++) {
// 		SetConsoleTextAttribute(hConsole, (WORD)((3 << 4) | 15)); // цвет звездочек
// 		star();
// 		if (k % 2 == 0) {
// 			SetConsoleTextAttribute(hConsole, 64);
// 			underline(42);
// 		}
// 		else {
// 			SetConsoleTextAttribute(hConsole, 112);
// 			underline(42);
// 		}
// 		k += 1;
// 	}
// 	for (int j = 0; j < 7; j++) {
// 		if (k % 2 == 0) {
// 			SetConsoleTextAttribute(hConsole, 64);
// 			underline(50);
// 		}
// 		else {
// 			SetConsoleTextAttribute(hConsole, 112);
// 			underline(50);
// 		}
// 		k += 1;
// 	}
// 	SetConsoleTextAttribute(hConsole, 7);
//         number_task = 0;
//         break;
//     case 5:
//         	HDC hdc = GetDC(GetConsoleWindow());
//  COLORREF penColor = RGB(255, 255, 255);
//  double y;
//  HPEN pen = CreatePen(PS_SOLID, 4, penColor);
//  SelectObject(hdc, pen);
//  MoveToEx(hdc, 0, 250, NULL);
//  LineTo(hdc, 1500, 250);
//  MoveToEx(hdc, 500, 0, NULL);
//  LineTo(hdc, 500, 1000);

//  for (int i = -1000; i < 1000; ++i) {
// 	 y = sin(pi * i / 100);
// 	 LineTo(hdc, 100 + i, 250 + int(50 * y));
// 	 MoveToEx(hdc, 100 + i, 250 + int(50 * y), NULL);
//  }
//  while (!_kbhit());
// }

//         number_task = 0;
//         break;
//     case 6:
//         	string b;
// 	cout << "Введите римское число:" << endl;
// 	getline(cin, b);
// 	cout << Decoder(b);
//         number_task = 0;
//         break;
//     case 7:
//     	int m, i, c, S0, S1;
// 	cout << "Введите m, i, c" << endl;
// 	cin >> m >> i >> c;
// 	S0 = time(0);
// 	for (int j = 0; j < i; j++) {
// 		S1 = (m * S0 + j) % c;
// 		cout << S1 << " ";
// 		S0 = S1;
// 	}
//         number_task = 0;
//         break;
    default:
        number_task = 0;
        break;
        }
    }
}