Advertisement
Viktor_Profa

Лабораторна робота №11

Oct 27th, 2024
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <stdexcept>
  4.  
  5. using namespace std;
  6.  
  7. // Клас String для роботи з рядком
  8. class String {
  9. private:
  10.     string str;
  11.  
  12. public:
  13.     // Конструктор за замовчуванням
  14.     String() : str("") {}
  15.  
  16.     // Конструктор з параметрами
  17.     String(const string& s) : str(s) {}
  18.  
  19.     // Конструктор копіювання
  20.     String(const String& other) : str(other.str) {}
  21.  
  22.     // Деструктор
  23.     ~String() {}
  24.  
  25.     // Вставлення символу у рядок
  26.     void insertChar(char c, size_t position) {
  27.         if (position > str.size()) {
  28.             throw out_of_range("Position is out of range.");
  29.         }
  30.         str.insert(position, 1, c);
  31.     }
  32.  
  33.     // Очищення рядка
  34.     void clear() {
  35.         str.clear();
  36.     }
  37.  
  38.     // Видалення символу з рядка
  39.     void removeChar(size_t position) {
  40.         if (position >= str.size()) {
  41.             throw out_of_range("Position is out of range.");
  42.         }
  43.         str.erase(position, 1);
  44.     }
  45.  
  46.     // Вставлення рядка у задане місце
  47.     void insertString(const string& s, size_t position) {
  48.         if (position > str.size()) {
  49.             throw out_of_range("Position is out of range.");
  50.         }
  51.         str.insert(position, s);
  52.     }
  53.  
  54.     // Пошук підрядка у рядку
  55.     size_t findSubstring(const string& sub) const {
  56.         return str.find(sub);
  57.     }
  58.  
  59.     // Виведення рядка
  60.     void display() const {
  61.         cout << str;
  62.     }
  63. };
  64.  
  65. // Клас Text для роботи з колекцією рядків
  66. class Text {
  67. private:
  68.     vector<String> lines; // Список рядків
  69.  
  70. public:
  71.     // Конструктор за замовчуванням
  72.     Text() {}
  73.  
  74.     // Деструктор
  75.     ~Text() {}
  76.  
  77.     // Додавання рядка до тексту
  78.     void addLine(const String& line) {
  79.         lines.push_back(line);
  80.     }
  81.  
  82.     // Очищення тексту
  83.     void clearText() {
  84.         lines.clear();
  85.     }
  86.  
  87.     // Виведення всього тексту
  88.     void displayText() const {
  89.         for (size_t i = 0; i < lines.size(); ++i) {
  90.             cout << i + 1 << ": ";
  91.             lines[i].display();
  92.             cout << endl;
  93.         }
  94.     }
  95.  
  96.     // Пошук підрядка у тексті
  97.     void searchInText(const string& sub) const {
  98.         bool found = false;
  99.         for (size_t i = 0; i < lines.size(); ++i) {
  100.             if (lines[i].findSubstring(sub) != string::npos) {
  101.                 cout << "Знайдено у рядку " << i + 1 << ": ";
  102.                 lines[i].display();
  103.                 cout << endl;
  104.                 found = true;
  105.             }
  106.         }
  107.         if (!found) {
  108.             cout << "Підрядок не знайдено у тексті." << endl;
  109.         }
  110.     }
  111. };
  112.  
  113. // Основна програма
  114. int main() {
  115.     // Створення об'єктів класу String
  116.     String line1("Hello, world!");
  117.     String line2("Welcome to the programming world.");
  118.     String line3("C++ is powerful.");
  119.  
  120.     // Створення об'єкта класу Text
  121.     Text text;
  122.  
  123.     // Додавання рядків до тексту
  124.     text.addLine(line1);
  125.     text.addLine(line2);
  126.     text.addLine(line3);
  127.  
  128.     // Виведення тексту
  129.     cout << "Текст:\n";
  130.     text.displayText();
  131.     cout << endl;
  132.  
  133.     // Вставлення символу у рядок
  134.     line1.insertChar('!', 5);
  135.     cout << "Після вставлення символу:\n";
  136.     line1.display();
  137.     cout << endl;
  138.  
  139.     // Видалення символу з рядка
  140.     line1.removeChar(5);
  141.     cout << "Після видалення символу:\n";
  142.     line1.display();
  143.     cout << endl;
  144.  
  145.     // Вставлення рядка у задане місце
  146.     line2.insertString(" amazing", 8);
  147.     cout << "Після вставлення рядка:\n";
  148.     line2.display();
  149.     cout << endl;
  150.  
  151.     // Пошук підрядка у тексті
  152.     string substring = "world";
  153.     cout << "Пошук підрядка \"" << substring << "\" у тексті:\n";
  154.     text.searchInText(substring);
  155.  
  156.     // Очищення тексту
  157.     text.clearText();
  158.     cout << "Текст очищено." << endl;
  159.  
  160.     return 0;
  161. }
  162.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement