Ivan_Moscow

6.1.10.

May 29th, 2018
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.18 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3.  
  4. class complexArray {
  5. private:
  6.     int len;
  7.     float *data_r;
  8.     float *data_i;
  9. public:
  10.     //Конструктор
  11.     complexArray (int input_len) {
  12.         len=input_len;
  13.         data_r = new float[input_len];
  14.         data_i = new float[input_len];
  15.         for (int i=0; i<input_len; i++) {
  16.             data_r[i] = rand()%201-100;
  17.             data_i[i] = rand()%201-100;
  18.         }
  19.         return;
  20.     }
  21.     //Деструктор
  22.     ~complexArray() {
  23.         delete[] data_r;
  24.         delete[] data_i;
  25.         return;
  26.     }
  27.     //Добавление
  28.     void add(float newr, float newi) {
  29.         //Нам надо увеличить длину массива,
  30.         //поэтому создаем новый на 1 больше
  31.         float *newdata_r = new float[len+1];
  32.         float *newdata_i = new float[len+1];
  33.         //Копируем
  34.         for (int i=0; i<len; i++) {
  35.             newdata_r[i] = data_r[i];
  36.             newdata_i[i] = data_i[i];
  37.         }
  38.         //Удаляем старый массив и перезаписываем
  39.         newdata_r[len] = newr;
  40.         newdata_i[len] = newi;
  41.         delete[] data_r;
  42.         delete[] data_i;
  43.         data_r = newdata_r;
  44.         data_i = newdata_i;
  45.         len++;
  46.         return;
  47.     }
  48.     //Удаление
  49.     void del(int index) {
  50.         float *newdata_r = new float[len-1];
  51.         float *newdata_i = new float[len-1];
  52.         //Проделываем ту же операцию
  53.         for (int i=0, j=0; i<len-1; i++, j++) {
  54.             if (i==index) {
  55.                 j++;
  56.             }
  57.             newdata_r[i] = data_r[j];
  58.             newdata_i[i] = data_i[j];
  59.         }
  60.         //Освобождаем память в data
  61.         delete[] data_r;
  62.         delete[] data_i;
  63.         data_r = newdata_r;
  64.         data_i = newdata_i;
  65.         len--;
  66.         return;
  67.     }
  68.     //Вывод
  69.     void print() {
  70.         std::cout<<"Array of complex numbers:\n";
  71.         for (int i=0; i<len; i++) {
  72.             std::cout<<data_r[i];
  73.             if (data_i[i]>0) {
  74.                 std::cout<<"+";
  75.             }
  76.             if (data_i[i]!=0) {
  77.                 std::cout<<data_i[i]<<"i";
  78.             }
  79.             std::cout<<"\n";
  80.         }
  81.         return;
  82.     }
  83. };
  84.  
  85. int _tmain(int argc, _TCHAR* argv[])
  86. {
  87.     //Создадим для проверки массив
  88.     complexArray foo(10);
  89.     foo.print();
  90.     //Протестируем функции добавления и удаления
  91.     std::cout<<"\n\n";
  92.     foo.add(123, 456);
  93.     foo.del(5);
  94.     foo.print();
  95.     system("pause");
  96.     return 0;
  97. }
Add Comment
Please, Sign In to add comment