Advertisement
VictoriaLodochkina

lab 5 sem 2 popitka

Mar 25th, 2020
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #define _USE_MATH_DEFINES
  4. #include <math.h>
  5. #include <string>
  6. #include <vector>
  7. #include <algorithm>
  8.  
  9. using namespace std;
  10. struct Point
  11. {
  12.     double x;
  13.     double y;
  14. };
  15. double leng(Point a, Point b);
  16. struct Triangle
  17. {
  18.     Point a;
  19.     Point b;
  20.     Point c;
  21. };
  22. struct Highs
  23. {
  24.     double hi1;
  25.     double hi2;
  26.     double hi3;
  27. };
  28.  
  29.  
  30. struct Information
  31. {
  32.     string Name;
  33.     string Date;
  34.     string Problem;
  35.     string Status;
  36. };
  37. double perim(Triangle t);
  38. double area(Triangle t);
  39. double dist(Point p, Point a, Point b);
  40. //void altitudes(Triangle t);
  41. Highs altitudes(Triangle t);
  42.  
  43. void Eraser(vector<Information> in);
  44. int main()
  45. {
  46.     //setlocale(LC_ALL, "Russian");
  47.     SetConsoleCP(1251);
  48.     SetConsoleOutputCP(1251);
  49.     long n;
  50.     char ex = 'n';
  51.     do {
  52.         cout << "Введите номер задания: " << endl;
  53.         char task;
  54.         /*cin.ignore(100, '\n');*/
  55.         cin >> task;
  56.         switch (task)
  57.         {
  58.         case '1': {
  59.             /*Описать тип Point - с полями вещественного типа x и y (координаты точки на
  60. плоскости) - и функцию leng(a, b) вещественного типа, находящую длину отрезка
  61. AB на плоскости по координатам его концов (a и b - параметры типа Point). Описать
  62. тип Triangle - с полями a, b, c типа Point (вершины треугольника) - и функцию
  63. perim(t) вещественного типа, находящую периметр треугольника t (t - параметр типа
  64. Triangle). Описать функцию area(t) вещественного типа, находящую площадь
  65. треугольника t (t - параметр типа Triangle) по формуле Герона. Описать функцию
  66. dist(p, a, b) вещественного типа (p, a, b - параметры типа Point), находящую
  67. расстояние d(p, ab) от точки P до прямой AB. Описать функцию altitudes(t, h1, h2,
  68. h3), находящую высоты h1, h2, h3 треугольника t (t - входной параметр типа Triangle,
  69. h1, h2, h3 - выходные вещественные параметры), проведенные соответственно из
  70. вершин t.a, t.b, t.c. С помощью этой функции найти высоты треугольников ABC,
  71. ABD, ACD, если даны координаты точек A, B, C, D.*/
  72.             Point A, B, C, D;
  73.             cout << "Enter Ax, Ay, Bx, By, Cx, Cy, Dx, Dy: " << endl;
  74.             cin >> A.x >> A.y >> B.x >> B.y >> C.x >> C.y >> D.x >> D.y;
  75.             Triangle ABC = { A, B, C };
  76.             Triangle ABD = { A, B, D };
  77.             Triangle ACD = { A, C, D };
  78.             Highs resH;
  79.             resH = altitudes(ABC);
  80.             cout << "Your result: " << endl << "h1 = " << resH.hi1 << endl << "h2 = " << resH.hi2 << endl << "h3 = " << resH.hi3 << endl;
  81.             resH = altitudes(ABD);
  82.             cout << "Your result: " << endl << "h1 = " << resH.hi1 << endl << "h2 = " << resH.hi2 << endl << "h3 = " << resH.hi3 << endl;
  83.             resH = altitudes(ACD);
  84.             cout << "Your result: " << endl << "h1 = " << resH.hi1 << endl << "h2 = " << resH.hi2 << endl << "h3 = " << resH.hi3 << endl;
  85.             break;
  86.         }
  87.         case '2': {
  88.             /*Известна следующая информация об n заявках в сервисном центре по ремонту
  89. компьютерной техники(n – натуральное число) : наименование товара, дата
  90. поступления, описание неисправности, статус заявки(напр, «рассматривается»
  91. или «обработано»).Удалить все записи со статусом заявки «обработано».*/
  92.             int n;
  93.             cout << "Enter n: " << endl;
  94.             cin >> n;
  95.             vector<Information> info(n);
  96.             cin.ignore(100, '\n');
  97.             cin.clear();
  98.             for (int i = 0; i < n; i++)
  99.             {
  100.                 cout << "Fill list " << i + 1 << ":" << endl << "Name: " << endl;
  101.                 getline(cin, info.at(i).Name);
  102.                 cout << "Date: " << endl;
  103.                 getline(cin, info.at(i).Date);
  104.                 cout << "Problem: " << endl;
  105.                 getline(cin, info.at(i).Problem);
  106.                 cout << "Status: " << endl;
  107.                 getline(cin, info.at(i).Status);
  108.             }
  109.             Eraser(info);
  110.             break;
  111.         }
  112.         default: {cout << "Нет такой задачи.\n"; } break;
  113.         }
  114.         cout << "Если вы хотите выйти, нажмите \'y\', в противном случае-любую другую клавишу" << endl;
  115.         cin.ignore(100, '\n');
  116.         cin >> ex;
  117.     } while (ex != 'y');
  118.     return 0;
  119. }
  120.  
  121. double leng(Point a, Point b)
  122. {
  123.     double len = sqrt(pow((b.x - a.x), 2) + pow((b.y - a.y), 2));//
  124.     return len;
  125. }
  126.  
  127. double perim(Triangle t)
  128. {
  129.     double p = leng(t.a, t.b) + leng(t.b, t.c) + leng(t.c, t.a);
  130.     return p;
  131. }
  132.  
  133. double area(Triangle t)
  134. {
  135.     double p2 = perim(t) / 2;
  136.     double s = sqrt((p2) * (p2 - leng(t.a, t.b)) * (p2 - leng(t.b, t.c)) * (p2 - leng(t.c, t.a)));
  137.     return s;
  138. }
  139.  
  140. double dist(Point p, Point a, Point b)
  141. {
  142.     Triangle tt = { p, a, b };
  143.     double dst = 2 * (area(tt) / leng(a, b));///////////////
  144.     return dst;
  145. }
  146.  
  147. Highs altitudes(Triangle t)
  148. {
  149.     Highs myH;
  150.     double ha, hb, hc;
  151.     ha = dist(t.a, t.b, t.c);
  152.     hb = dist(t.b, t.a, t.c);
  153.     hc = dist(t.c, t.a, t.b);
  154.     myH.hi1 = ha;
  155.     myH.hi2 = hb;
  156.     myH.hi3 = hc;
  157.     return myH;
  158. }
  159. void Eraser(vector<Information> in)
  160. {
  161.     for (int i = 0; i < in.size(); i++)
  162.     {
  163.         if (in.at(i).Status == "обработано")
  164.         {
  165.             in.erase(in.begin() + i);
  166.         }
  167.     }
  168.     cout << "*******************************************************************" << endl;
  169.     cout << "Results: " << endl;
  170.     for (int i = 0; i < in.size(); i++)
  171.     {
  172.         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;
  173.         cout << "             ***" << endl;
  174.     }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement