Advertisement
allekco

lab0 ver. 2.0

Nov 3rd, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <ostream>
  3. using namespace std;
  4.  
  5. class Sequence {
  6. private:
  7.     int* point; // указатель на массив
  8.     int Length; // размер массива
  9. public:
  10.     void newEmpty() {
  11.         Length = 0; // по умолчанию размер массива = 10 элементов
  12.         point = new int[Length]; // выделить место в памяти для массива
  13.     }
  14.     int getLength() {
  15.         cout << "Lenght of sequence: ";
  16.         cout << Length << endl;
  17.         return Length;
  18.     }
  19.     int getIsEmpty() {
  20.         if (Length == 0) {
  21.             cout << "Sequence is empty" << endl;
  22.             return 1;
  23.         }
  24.         else {
  25.             cout << "Sequence isn't empty" << endl;
  26.             return -1;
  27.         }
  28.     }
  29.     void Append(int item) {
  30.         int i;
  31.         int* tmp;
  32.         tmp = new int[Length]; // выделяем память
  33.         for (i = 0; i < Length; i++) {
  34.             tmp[i] = point[i];
  35.         }
  36.         Length = Length + 1; // увеличиваем размер массива на 1
  37.         point = new int[Length];
  38.         for (i = 0; i < Length-1; i++) {
  39.             point[i] = tmp[i];
  40.         }
  41.         point[Length-1] = item;
  42.         delete tmp;
  43.     }
  44.     void Prepend(int item) {
  45.         int i;
  46.         int* tmp;
  47.         tmp = new int[Length]; // выделяем память
  48.         for (i = 0; i < Length; i++) {
  49.             tmp[i] = point[i];
  50.         }
  51.         Length = Length + 1; // увеличиваем размер массива на 1
  52.         point = new int[Length];
  53.         point[0] = item;
  54.         for (i = 1; i < Length; i++) {
  55.             point[i] = tmp[i-1];
  56.         }
  57.         delete tmp;
  58.     }
  59.     void InsertAt(int index, int item) {
  60.         if ((Length+1 <= index) || (index < 0)) {
  61.             cout << "This index out of length" << endl;
  62.         }
  63.         else {
  64.             int i;
  65.             int* tmp;
  66.             tmp = new int[Length]; // выделяем память
  67.             for (i = 0; i < Length; i++) {
  68.                 tmp[i] = point[i];
  69.             }
  70.             Length = Length + 1; // увеличиваем размер массива на 1
  71.             point = new int[Length];
  72.             for (i = 0; i < index; i++)
  73.                 point[i] = tmp[i];
  74.             point[index] = item;
  75.             for (i = index + 1; i < Length; i++)
  76.                 point[i] = tmp[i - 1];
  77.             delete tmp;
  78.         }
  79.     }
  80.     void Remove(int item) {
  81.         int i = 0, index, key = 0;
  82.         while(i < Length) {
  83.             if (point[i] == item) {
  84.                 index = i;
  85.                 i = Length;
  86.                 key = 1;
  87.             }
  88.             i++;
  89.         }
  90.         if (key){ //удаляем
  91.             int* tmp;
  92.             tmp = new int[Length];
  93.             for (i = 0; i < Length; i++) {
  94.                 tmp[i] = point[i];
  95.             }
  96.             Length = Length - 1;
  97.             point = new int[Length];
  98.             for (i = 0; i < index; i++) {
  99.                 point[i] = tmp[i];
  100.             }
  101.             for (i = index; i < Length; i++) {
  102.                 point[i] = tmp[i + 1];
  103.             }
  104.         }
  105.     }
  106.     int GetFirst() {
  107.         if (Length != 0) {
  108.             cout << "First element: " << point[0] << endl;
  109.             return point[0];
  110.         }
  111.         else {
  112.             cout << "Sequance is empty" << endl;
  113.             return -1;
  114.         }
  115.     }
  116.     int GetLast() {
  117.         if (Length != 0) {
  118.             cout << "Last element: " << point[Length-1] << endl;
  119.             return point[Length-1];
  120.         }
  121.         else {
  122.             cout << "Sequance is empty" << endl;
  123.             return -1;
  124.         }
  125.     }
  126.     int Get(int index) {
  127.         if ((Length <= index) || (index < 0)) {
  128.             cout << "Element with index " << index << " didn't find" << endl;
  129.             return -1;
  130.         }
  131.         else {
  132.             cout << "Element with index " << index << ": ";
  133.             cout << point[index] << endl;
  134.             return point[index];
  135.         }
  136.     }
  137.     Sequence GetSubsequence(int startIndex, int endIndex) {
  138.         Sequence B;
  139.         B.newEmpty();
  140.         if ((startIndex < 0) || (endIndex < 0) || (endIndex < startIndex) || (endIndex >= Length)) {
  141.             cout << "Error with index" << endl;
  142.         }
  143.         else {
  144.             for (int i = startIndex; i <= endIndex; i++) {
  145.                 B.Append(point[i]);
  146.             }
  147.         }
  148.         return B;
  149.     }
  150.  
  151.     void OutputSequance() {
  152.         int i;
  153.         for (i = 0; i < Length; i++) {
  154.             cout << point[i] << " ";
  155.         }
  156.         cout << endl;
  157.     }
  158. };
  159.  
  160. int main() {
  161.     Sequence A;
  162.     A.newEmpty();
  163.     A.getLength();
  164.     cout << endl;
  165.     A.Append(23);
  166.     A.getLength();
  167.     A.GetFirst();
  168.     A.GetLast();
  169.     A.Get(0);
  170.     A.Get(-1);
  171.     A.Get(1);
  172.     cout << endl;
  173.     A.Append(43);
  174.     A.getLength();
  175.     A.Get(0);
  176.     A.Get(1);
  177.     A.Get(-1);
  178.     A.Get(2);
  179.     cout << endl;
  180.     A.Prepend(53);
  181.     A.getLength();
  182.     A.GetFirst();
  183.     A.GetLast();
  184.     A.Get(0);
  185.     A.Get(1);
  186.     A.Get(-1);
  187.     A.Get(3);
  188.     cout << endl;
  189.     Sequence A2;
  190.     A2 = A.GetSubsequence(1, 1);
  191.     A2.getLength();
  192.     A2.GetFirst();
  193.     A2.GetLast();
  194.  
  195.     return 0;
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement