Savelyev_Vyacheslav

OOP L2

Jul 26th, 2021 (edited)
820
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class Rayd
  6. {
  7.     double n;
  8. public:
  9.     Rayd(double _n)
  10.     {
  11.         n = _n;
  12.     }
  13.     virtual void rayd() = 0;
  14.     virtual void summ() = 0;
  15.     double getN()
  16.     {
  17.         return n;
  18.     }
  19.     virtual ~Rayd()
  20.     {
  21.         cout << "---destruct_Rayds" << endl;
  22.     }
  23. };
  24. class RaydArifmet : public Rayd
  25. {
  26.     double finish;
  27.     int k;
  28.     double* arr;
  29. public:
  30.  
  31.     RaydArifmet(double n, double v) : Rayd(n)
  32.     {
  33.         finish = v;
  34.     }
  35.  
  36.     void rayd() override
  37.     {
  38.         int d = 3;
  39.         int i=0;
  40.         double temp = getN();
  41.         cout << "RaydArifmet: ";
  42.         while (temp <= finish) {
  43.         temp = getN() + i * d; i++;
  44.     }
  45.         k = i;i = 0;
  46.         arr = new double[k];
  47.         temp = getN();
  48.          while (temp <= finish) {
  49.             arr[i] = temp;
  50.             cout << arr[i] << " ";
  51.             i++;
  52.             temp = getN() + i * d;
  53.          }
  54.     }
  55.    
  56.     void summ() override
  57.     {
  58.         int i = 0;
  59.         int num = k-2;
  60.         double summ;
  61.         summ = (num + 1) * (arr[0] + arr[num]);
  62.         cout << endl;  
  63.         cout <<"[Summ "<< summ <<" Summ]";
  64.         cout << endl;
  65.     }
  66.  
  67.     ~RaydArifmet()
  68.     {
  69.         delete[] arr;
  70.         cout << "---destruct_RaydArifmet---" << endl;
  71.     }
  72. };
  73. class RaydGeometr : public Rayd
  74. {
  75.     double finish;
  76.     double* arr;
  77.     int k;
  78.     public:
  79.  
  80.     RaydGeometr(double n, double vf) : Rayd(n)
  81.     {
  82.         finish = vf;
  83.     }
  84.  
  85.     void rayd() override
  86.     {
  87.         int r = 3;
  88.         int i = 0;
  89.         double temp = getN();
  90.         cout << "RaydGeometr: ";
  91.         while (temp <= finish) {
  92.         temp = getN()*pow(r,i); i++;
  93.         }
  94.         k = i; i = 0;
  95.         arr = new double[k];
  96.  
  97.         temp = getN();
  98.         while (temp <= finish) {
  99.             if (getN() == 0) {
  100.                 cout << "нет значений" << endl;
  101.                 break;
  102.             }
  103.             arr[i] = temp;
  104.             cout << arr[i] << " ";
  105.             i++;
  106.             temp = getN() * pow(r, i);
  107.         }
  108.     }
  109.  
  110.     void summ() override
  111.     {
  112.         if (getN() == 0) {
  113.             return;
  114.         }
  115.         int i = 0;
  116.         int num = k - 2;
  117.         double summ;
  118.         int r = 3;
  119.         summ = (num + 1) * (arr[0] + arr[num]);
  120.         summ = (arr[0] - arr[num] * r) / (1 - r);
  121.         cout << endl;
  122.         cout << "[Summ " << summ << " Summ]";
  123.         cout << endl;
  124.     }
  125.  
  126.     ~RaydGeometr()
  127.     {
  128.         delete[] arr;
  129.         cout << "---destruct_Rayd-Geometr" << endl;
  130.     }
  131. };
  132.  
  133. void main()
  134. {
  135.     setlocale(LC_ALL, "Russian");
  136.  
  137.     double num1;
  138.     double num2;
  139.  
  140.     while (1) {
  141.  
  142.     cout << "Vvedite pervoe chislo ryada (A-нулевое): ";
  143.     cin >> num1;
  144.     cout << "Vvedite poslednee chislo ryada (A-энное): ";
  145.     cin >> num2;
  146.  
  147.     Rayd* vec;
  148.     vec = new RaydArifmet(num1, num2);
  149.     vec->rayd();
  150.     vec->summ();
  151.     delete vec;
  152.  
  153.     vec = new RaydGeometr(num1, num2);
  154.     vec->rayd();
  155.     vec->summ();
  156.     delete vec;
  157.  
  158.     }
  159. }
RAW Paste Data