Перейти к основному содержанию
EDU-MMCS
  • В начало
  • Дополнительно
Вы используете гостевой доступ
Вход
В начало
  1. Prog_3
  2. Лабораторная работа 6. Строки. Повторение классов

Лабораторная работа 6. Строки. Повторение классов

Требуемые условия завершения
Открыто с: пятница, 31 октября 2025, 00:00
Срок сдачи: пятница, 7 ноября 2025, 00:00

1. Понятие класса и объекта

Класс — это пользовательский тип данных, объединяющий переменные (поля) и функции (методы), которые работают с этими данными.

Пример простого класса:

#include <iostream> #include <string> using namespace std; class Student { private: string name; int age; double grade; public: void setData(string n, int a, double g) { name = n; age = a; grade = g; } void showData() { cout << "Имя: " << name << ", Возраст: " << age << ", Средний балл: " << grade << endl; } };

Объект — это конкретный экземпляр класса:

Student s1; s1.setData("Анна", 19, 4.7); s1.showData();

2. Модификаторы доступа

МодификаторЗначение
publicдоступен из любой части программы
privateдоступен только внутри класса
protectedиспользуется при наследовании

3. Инкапсуляция

Это принцип ООП, заключающийся в сокрытии данных и управлении доступом через методы.
Данные защищаются с помощью private, а доступ к ним — через public функции.


4. Конструкторы

Конструктор — это специальная функция, вызываемая при создании объекта.

Пример:

class Car { private: string brand; double price; public: Car(string b, double p) { // конструктор brand = b; price = p; } void print() { cout << "Марка: " << brand << ", Цена: " << price << endl; } };

5. Массивы объектов

Позволяют хранить несколько объектов одного класса:

Student group[3]; for (int i = 0; i < 3; i++) group[i].setData(...);

Можно также использовать vector<Student> из библиотеки <vector>.


6. Работа со строками (std::string)

Строки в C++ реализованы классом std::string.
Они удобны, безопасны и имеют встроенные методы.

МетодНазначение
.length()длина строки
.find("текст")поиск подстроки
.substr(pos, len)выделение подстроки
.append("текст")добавление текста
.erase(pos, len)удаление символов

Пример:

string fullName = "Иванов Иван"; if (fullName.find("Иван") != string::npos) cout << "Имя найдено!" << endl;

Практическая часть

Задание 1. “Кинотеатр”

Создать класс Movie, содержащий:

  • название фильма (string title);

  • жанр (string genre);

  • рейтинг (double rating).

Реализовать:

  1. Методы input() и print().

  2. Метод isHit() — возвращает true, если рейтинг > 8.0.

  3. Создать массив из N фильмов.

  4. Вывести фильмы с рейтингом выше 8.0.

Подсказка:

if (rating > 8.0) cout << title << " — хит!" << endl;

Задание 2. “Автосалон”

Создать класс Car, содержащий:

  • марку (string brand);

  • модель (string model);

  • цену (double price).

Реализовать:

  1. Конструктор и метод printInfo().

  2. Метод isLuxury() — возвращает true, если цена > 5 000 000.

  3. Создать массив из 5 автомобилей.

  4. Вывести все автомобили класса «люкс».


Задание 3. “Погода в городах”

Создать класс Weather с полями:

  • город (string city);

  • температура (double temperature);

  • описание погоды (string description).

Реализовать:

  1. Метод input().

  2. Метод print().

  3. Найти и вывести город с максимальной температурой.

  4. Вывести города, где температура < 0°C.


Задание 4. “Счёт в банке”

Создать класс BankAccount, который хранит:

  • номер счёта (string accountNumber);

  • имя владельца (string owner);

  • баланс (double balance).

Реализовать:

  1. Методы deposit(sum), withdraw(sum), printInfo().

  2. Проверку: нельзя снять больше, чем есть на счёте.

  3. Массив из нескольких счетов.

  4. Найти счёт с наибольшим балансом.


 Задание 5. “Интернет-магазин”

Создать класс Item с полями:

  • название (string name);

  • категория (string category);

  • цена (double price);

  • количество (int quantity).

Реализовать:

  1. Методы input(), print(), getTotalCost().

  2. Массив товаров.

  3. Найти:

    • общую стоимость всех товаров;

    • самый дорогой товар;

    • товары заданной категории.


Задание 6 (на строки). “Анализ текста”

Создать класс TextAnalyzer, содержащий строку text.

Реализовать методы:

  • countWords() — количество слов;

  • countLetters() — количество букв;

  • containsWord(string word) — поиск слова в тексте.

Пример работы:

Введите текст: Программирование на C++ очень интересно! Введите слово для поиска: C++ Количество слов: 4 Количество букв: 28 Слово найдено!

Пример вывода (задание "Кинотеатр")

Введите количество фильмов: 3 1. Название: Дюна, Жанр: Фантастика, Рейтинг: 8.3 2. Название: Морбиус, Жанр: Боевик, Рейтинг: 5.6 3. Название: Оппенгеймер, Жанр: Драма, Рейтинг: 8.9 Хиты проката: Дюна (8.3) Оппенгеймер (8.9)

Вы используете гостевой доступ (Вход)
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика
На платформе Moodle