Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #define _USE_MATH_DEFINES
- #include <math.h>
- #include <string>
- #include <vector>
- #include <algorithm>
- using namespace std;
- struct Point
- {
- double x;
- double y;
- };
- double leng(Point a, Point b);
- struct Triangle
- {
- Point a;
- Point b;
- Point c;
- };
- struct Highs
- {
- double hi1;
- double hi2;
- double hi3;
- };
- struct Information
- {
- string Name;
- string Date;
- string Problem;
- string Status;
- };
- double perim(Triangle t);
- double area(Triangle t);
- double dist(Point p, Point a, Point b);
- //void altitudes(Triangle t);
- Highs altitudes(Triangle t);
- void Eraser(vector<Information> in);
- int main()
- {
- //setlocale(LC_ALL, "Russian");
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- long n;
- char ex = 'n';
- do {
- cout << "Введите номер задания: " << endl;
- char task;
- /*cin.ignore(100, '\n');*/
- cin >> task;
- switch (task)
- {
- case '1': {
- /*Описать тип Point - с полями вещественного типа x и y (координаты точки на
- плоскости) - и функцию leng(a, b) вещественного типа, находящую длину отрезка
- AB на плоскости по координатам его концов (a и b - параметры типа Point). Описать
- тип Triangle - с полями a, b, c типа Point (вершины треугольника) - и функцию
- perim(t) вещественного типа, находящую периметр треугольника t (t - параметр типа
- Triangle). Описать функцию area(t) вещественного типа, находящую площадь
- треугольника t (t - параметр типа Triangle) по формуле Герона. Описать функцию
- dist(p, a, b) вещественного типа (p, a, b - параметры типа Point), находящую
- расстояние d(p, ab) от точки P до прямой AB. Описать функцию altitudes(t, h1, h2,
- h3), находящую высоты h1, h2, h3 треугольника t (t - входной параметр типа Triangle,
- h1, h2, h3 - выходные вещественные параметры), проведенные соответственно из
- вершин t.a, t.b, t.c. С помощью этой функции найти высоты треугольников ABC,
- ABD, ACD, если даны координаты точек A, B, C, D.*/
- Point A, B, C, D;
- cout << "Enter Ax, Ay, Bx, By, Cx, Cy, Dx, Dy: " << endl;
- cin >> A.x >> A.y >> B.x >> B.y >> C.x >> C.y >> D.x >> D.y;
- Triangle ABC = { A, B, C };
- Triangle ABD = { A, B, D };
- Triangle ACD = { A, C, D };
- Highs resH;
- resH = altitudes(ABC);
- cout << "Your result: " << endl << "h1 = " << resH.hi1 << endl << "h2 = " << resH.hi2 << endl << "h3 = " << resH.hi3 << endl;
- resH = altitudes(ABD);
- cout << "Your result: " << endl << "h1 = " << resH.hi1 << endl << "h2 = " << resH.hi2 << endl << "h3 = " << resH.hi3 << endl;
- resH = altitudes(ACD);
- cout << "Your result: " << endl << "h1 = " << resH.hi1 << endl << "h2 = " << resH.hi2 << endl << "h3 = " << resH.hi3 << endl;
- break;
- }
- case '2': {
- /*Известна следующая информация об n заявках в сервисном центре по ремонту
- компьютерной техники(n – натуральное число) : наименование товара, дата
- поступления, описание неисправности, статус заявки(напр, «рассматривается»
- или «обработано»).Удалить все записи со статусом заявки «обработано».*/
- int n;
- cout << "Enter n: " << endl;
- cin >> n;
- vector<Information> info(n);
- cin.ignore(100, '\n');
- cin.clear();
- for (int i = 0; i < n; i++)
- {
- cout << "Fill list " << i + 1 << ":" << endl << "Name: " << endl;
- getline(cin, info.at(i).Name);
- cout << "Date: " << endl;
- getline(cin, info.at(i).Date);
- cout << "Problem: " << endl;
- getline(cin, info.at(i).Problem);
- cout << "Status: " << endl;
- getline(cin, info.at(i).Status);
- }
- Eraser(info);
- break;
- }
- default: {cout << "Нет такой задачи.\n"; } break;
- }
- cout << "Если вы хотите выйти, нажмите \'y\', в противном случае-любую другую клавишу" << endl;
- cin.ignore(100, '\n');
- cin >> ex;
- } while (ex != 'y');
- return 0;
- }
- double leng(Point a, Point b)
- {
- double len = sqrt(pow((b.x - a.x), 2) + pow((b.y - a.y), 2));//
- return len;
- }
- double perim(Triangle t)
- {
- double p = leng(t.a, t.b) + leng(t.b, t.c) + leng(t.c, t.a);
- return p;
- }
- double area(Triangle t)
- {
- double p2 = perim(t) / 2;
- double s = sqrt((p2) * (p2 - leng(t.a, t.b)) * (p2 - leng(t.b, t.c)) * (p2 - leng(t.c, t.a)));
- return s;
- }
- double dist(Point p, Point a, Point b)
- {
- Triangle tt = { p, a, b };
- double dst = 2 * (area(tt) / leng(a, b));///////////////
- return dst;
- }
- Highs altitudes(Triangle t)
- {
- Highs myH;
- double ha, hb, hc;
- ha = dist(t.a, t.b, t.c);
- hb = dist(t.b, t.a, t.c);
- hc = dist(t.c, t.a, t.b);
- myH.hi1 = ha;
- myH.hi2 = hb;
- myH.hi3 = hc;
- return myH;
- }
- void Eraser(vector<Information> in)
- {
- for (int i = 0; i < in.size(); i++)
- {
- if (in.at(i).Status == "обработано")
- {
- in.erase(in.begin() + i);
- }
- }
- cout << "*******************************************************************" << endl;
- cout << "Results: " << endl;
- for (int i = 0; i < in.size(); i++)
- {
- cout << "List " << i + 1 << ":" << endl << in.at(i).Name << endl << in.at(i).Date << endl << in.at(i).Problem << endl << in.at(i).Status << endl;
- cout << " ***" << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement