Advertisement
Guest User

Laba1 pt.2

a guest
Dec 8th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.69 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <cstdio>
  4.  
  5. using namespace std;
  6.  
  7. class CStr
  8. {
  9.     char *c;        // указатель на строку символов
  10.     void cgen(int l) {  // метод для генерации случайной строки длины l
  11.         c = new char[l + 1];    // динамическое выделение памяти
  12.         for (int i = 0; i < l; i++) // генерация случайной строки длины l
  13.             c[i] = 'a' + rand() % 26;
  14.         c[l] = 0;   // заканчивается нулём, по условию задачи
  15.     }
  16. public:
  17.  
  18.     CStr() {        // конструктор по умолчанию
  19.         cgen(1 + rand() % 20);
  20.     };
  21.  
  22.     CStr(char *str) {       // конструктор с параметром "строка"
  23.         c = new char[strlen(str) + 1];
  24.         strcpy(c, str);
  25.     }
  26.  
  27.     CStr(CStr &str)     // копирование j,]trnf
  28.     {
  29.         c = new char[strlen(str.c) + 1];
  30.         strcpy(c, str.c);
  31.     }
  32.  
  33.     CStr(int l) {       // конструктор с параметром "длина строки"
  34.         cgen(l);
  35.     }
  36.  
  37.     // Destructor (освобождение использованных ресурсов объекта)
  38.     ~CStr() {
  39.         if (c) delete[] c;
  40.     }
  41.  
  42.     CStr& operator=(CStr &obj)      // оператор присваивания объекта CStr
  43.     {
  44.         if (this == &obj) return *this;
  45.         if (c) delete[] c;
  46.         c = new char[strlen(obj.c) + 1];
  47.         strcpy(c, obj.c);
  48.         return *this;
  49.     }
  50.  
  51.     // оператор сравнения
  52.     bool operator>(CStr &b)     // перегрузка оператора >
  53.     {
  54.         if (strcmp(c, b.c) == 1) return true;
  55.         return false;
  56.     }
  57.  
  58.     int slen() {        // возврат длины строки
  59.         return strlen(c);
  60.     }
  61.  
  62.     // дружественный оператор вывода в поток
  63.     friend ostream& operator<<(ostream &st, CStr& ob)       // перегрузка оператора <<  
  64.     {
  65.         st << ob.c;
  66.         return st;
  67.     };
  68. };
  69.  
  70. class CStrArray {
  71. private:
  72.     CStr *arr;
  73.     int size;
  74. public:
  75.     CStrArray(int n) {      // конструктор с параметром "длина массива"
  76.         arr = new CStr[n];
  77.         CStr randomValue;
  78.         this->size = n;
  79.         for (int i = 0; i < n; i++) {
  80.             arr[i] = randomValue;
  81.         }
  82.     }
  83.     ~CStrArray() {      // деструктор
  84.         delete[] arr;
  85.     }
  86.     CStr operator[] (int index) {       // оператор индексации
  87.         return arr[index];
  88.     }
  89.     friend ostream& operator<<(ostream &st, CStr& ob) {
  90.  
  91.     }
  92.     CStr valueSort() {      // сортировка по значению
  93.  
  94.     }
  95.     CStr lengthSort() {     // сортировка по длине
  96.  
  97.     }
  98.     CStr check() {      // проверка упорядоченности масства по содержимому строк
  99.  
  100.     }
  101. };
  102.  
  103. int main()
  104. {
  105.     setlocale(LC_ALL, "Russian");
  106.     CStr a, b, asVar1, asVar2, e, f;
  107.     //CStr copyVariable(asVar2);        // явный
  108.     CStr copyVariable = asVar2;     // неявный
  109.     CStr lenVar(4);
  110.     CStr strVar("hello");
  111.     cout << "Конструктор по умолчанию: " << asVar1 << endl << endl;
  112.  
  113.     cout << "Конструктор с параметром строка: " << strVar << endl << endl;
  114.  
  115.     cout << "Конструктор по длине строки: " << lenVar << endl << endl;
  116.  
  117.     cout << "Копирование: " << copyVariable << " " << asVar2 << endl;
  118.  
  119.     cout << endl << "Присваивание: " << asVar1 << " " << asVar2 << endl;
  120.  
  121.     asVar1 = asVar2;
  122.  
  123.     cout << "Присвоенное значение: " << asVar1 << " " << endl;
  124.  
  125.     cout << endl << "Сравнение: " << endl;
  126.     cout << a << " " << b << " ";
  127.     if (a > b) {
  128.         cout << "- 1";
  129.     }
  130.     else {
  131.         cout << "- 0";
  132.     }
  133.  
  134.     cout << endl << endl << "Длина " << asVar2 << endl;
  135.     cout << asVar2.slen() << endl;
  136.  
  137.     system("pause");
  138.     return 0;
  139.  
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement