Advertisement
VictoriaLodochkina

lab 5 new

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