aLT22

Ann's_Lab_4_OOP (C++) (with comments)

Apr 11th, 2015
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.08 KB | None | 0 0
  1. /*  Создать абстрактный класс Norm с виртуальной функцией вычисления нормы и модуля
  2.     Определить производные классы Complex и Vector3D с собственными функциями вычисления нормы и модуля
  3. */
  4. #include <iostream>
  5. #include <cmath>
  6.  
  7. using namespace std;
  8.  
  9. class Norm {        // Наш абстрактный класс(класс называется абстрактным, если все в нем функции виртуальные)
  10.     public:
  11.         virtual double absolute() = 0;      // функция вычисления абсолютной величины (виртуальная функция будет переопределяться автоматически в классе-наследнике)
  12.         virtual double norm() = 0;      // функция вычисления нормы (аналогично ведет себя как виртуальная функция выше)
  13.         virtual void show() = 0;        // функция вывода на экран результата (также виртуальная)
  14.     protected:      // protected состояния класса, чтобы были доступны при наследовании этого абстрактного класса
  15.         int d, m;       // d - действительная, m - мнимая часть (в классах-потомках будут переопределяться в зависимости от роли)
  16. };
  17.  
  18. class Complex : public Norm {       // класс комплексного числа
  19.     public:
  20.         Complex(int D, int M) {         // конструктор класса
  21.             d = D;
  22.             m = M;
  23.         }
  24.         ~Complex() {        // деструткор класса
  25.             d = m = 0;
  26.         }
  27.         double absolute() {
  28.             return sqrt(d*d + m*m);
  29.         }
  30.         double norm() {
  31.             return absolute() * absolute();
  32.         }
  33.         void show() {
  34.             if (m < 0) {
  35.                 cout << "Полученное комплексное число: " << d << " -i" << -m << endl;
  36.             } else if (!m) {
  37.                 cout << "Полученное комплексное число: " << d << endl;
  38.             } else {
  39.                 cout << "Полученное комплексное число: " << d << " +i" << m << endl;
  40.             }
  41.         }
  42. };
  43.  
  44. class Vector3D : public Norm {      // класс, отвечающий за объект вектор
  45.     public:
  46.         Vector3D(int D, int M) {        // конструктор этого класса
  47.             d = D;
  48.             m = M;
  49.         }
  50.         ~Vector3D() {       // деструктор класса вектор3д
  51.             d = m = 0;
  52.         }
  53.         double absolute() {
  54.             return sqrt(d*d + m*m);
  55.         }
  56.         double norm() {
  57.             int result = max(abs(d), abs(m));
  58.             return result;
  59.         }
  60.         void show() {
  61.             cout << "Полученный вектор: " << d << ' ' << m << endl;
  62.         }
  63. };
  64.  
  65. int main() {
  66.     setlocale(LC_ALL, "Russian");
  67.     int D, M;
  68.     cout << "Введите два произвольных целых числа: "; cin >> D >> M; // задаем два произвольных целых числа, которые будем использовать либо как действительную и мнимую часть, либо как координаты вектора
  69.     Complex complex(D, M); Vector3D vector(D, M);
  70.     complex.show(); vector.show(); // выводим их на экран
  71.     char choice;
  72.     cout << "Введите, с чем хотите работать (как с комплексным числом --- c   как с вектором --- v): "; cin >> choice;
  73.     switch (choice) {
  74.         case ('c'):
  75.             complex.show();
  76.             cout << "Модуль комплексного числа: " << complex.absolute();
  77.             cout << "\nНорма равна: " << complex.norm() << endl;
  78.             break;
  79.         case ('v'):
  80.             vector.show();
  81.             cout << "Модуль вектора: " << vector.absolute();
  82.             cout << "\nНорма вектора равна: " << vector.norm() << endl;
  83.             break;
  84.     }
  85.     char final_choice;
  86.     cout << "Чтобы продолжить работу, нажмите c: "; cin >> final_choice;
  87.     if (final_choice == 'c') {
  88.         main();
  89.     } else {
  90.         system("pause");
  91.         return 0;
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment