
- •Міністерство освіти і науки україни
- •Розділ 1. Інкапсуляція та приховування інформації
- •1.1 Визначення та використання класів
- •1.2. Поля і методи класів
- •1.2.1 Поля і методи класів
- •1.2.2 Опис об’єктів
- •1.2.3 Вказівка this
- •Void cure(int health, int ammo)
- •1.3 Інкапсуляція та приховування інформації
- •1.3.1. Приховані дані
- •1.3.2. Загальнодоступні і приватні члени класу
- •1.3.3. Захищені члени класу
- •Void b::fb()
- •Void c::fc()
- •Void c::fc(a&a)
- •Void main()
- •1.3.4. Організація загального інтерфейсу
- •Void main()
- •1.4 Конструктори і деструктори
- •Void main()
- •Завдання
- •Розділ 2. Класи і підкласи
- •2.1. Конструктор копіювання
- •2.2 Вкладені класи
- •Void External::Inner::MethodInner(const External &t)
- •2.3 Статичні елементи класу
- •2.3.1 Статичні поля
- •2.3.2 Статичні методи
- •Void f()
- •2.4 Дружні функції і класи
- •2.4.1 Дружня функція
- •Void Spouse(Person &p)
- •Void main()
- •2.4.2 Дружній клас
- •Завдання
- •Розділ 3. Спадкування класів
- •3.1 Спадкування класів
- •Void b::bb(int u)
- •Void main()
- •Приклад.
- •Void main()
- •Void main()
- •Void main()
- •3.2 Множинне спадкування
- •Void main()
- •Void main()
- •3.3. Типовий приклад спадкування
- •Void DatabaseObject::Display ( )
- •Завдання
- •Розділ 4. Поліморфізм
- •4.1. Віртуальні функції
- •Void main()
- •Void main()
- •4.2 Абстрактні класи
- •Void show(a* a)
- •Void main()
- •4.3. Приклади поліморфізму
- •Virtual double f1()
- •Void main()
- •4.4. Внутрішнє представлення об’єктів і таблиця методів
- •Void do_(a& a)
- •Void main()
- •Void show(a* a)
- •Void main()
- •Завдання
- •Розділ 5. Перевантаження операторів
- •5.1 Загальні відомості
- •5.2 Перевантаження унарних операторів
- •Int geth()
- •Void set_h (int h)
- •5.3 Перевантаження бінарних операторів та операторів присвоювання
- •Void main()
- •5.4 Перевантаження операторів new і delete
- •Void * pObj::operator new(size_t size)
- •Void pObj::operator delete(void* ObjToDie, size_t size)
- •5.5 Перевантаження оператору приведення типу
- •Operator ім’я нового типу ();
- •5.6 Перевантаження оператору виклику функції
- •5.7 Перевантаження оператору індексування
- •Vect::Vect (int n): size(n)
- •Завдання
- •Розділ 6. Обробка виключних ситуацій
- •6.1 Загальні відомості про виключні ситуації
- •6.2 Синтаксис виключень
- •6.3 Перехоплення виключень
- •Void f1()
- •Void f2()
- •Void main()
- •Void GotoXy(int X, int y)
- •Void kontr (char* str) throw (const char*)
- •Void main()
- •Void MyFunc()
- •Void main()
- •6.4 Список виключень функції
- •6.5 Виключення в конструкторах та деструкторах
- •6.6 Ієрархії виключень
- •Завдання
- •Розділ 7. Рядки
- •Void main ()
- •7.1.1 Конструктори і операції привласнення
- •7.1.2 Операції
- •7.2. Функції класу string
- •7.2.1 Привласнення і додавання частин рядків
- •7.2.2 Перетворення рядків
- •Void main ()
- •7.2.3 Пошук підрядків
- •Void main()
- •7.2.3 Порівняння частин рядків
- •Void main ()
- •7.2.4 Отримання характеристик рядків
- •Завдання
- •Розділ 8. Шаблони класів
- •8.1. Загальна характеристика динамічних структур даних
- •8.2. Стек
- •Void main()
- •Void push(Node **top, int d)
- •Int pop (Node **top)
- •8.3. Черга
- •Void main()
- •Void add(Node **pend, int d)
- •Int del(Node **pbeg)
- •8.4. Лінійний список
- •Void main()
- •Void add(Node **pend, int d)
- •8.5. Шаблони функцій
- •Void main()
- •Void myfunc(type1 X, type2 y)
- •Void main()
- •8.6 Загальні відомості шаблонів класів
- •Void List ::print()
- •Void List::print_back()
- •Void main()
- •8.7 Створення шаблонів-класів
- •Void main()
- •8.8 Спеціалізація шаблонів класів
- •8.9 Переваги та недоліки шаблонів
- •Завдання
- •Розділ 9. Модульні програми (проектування об’єктно-орієнтованого програмування)
- •9.1 Короткі відомості
- •9.2 Збірка вихідних текстів
- •Void main()
- •9.3 Відділення інтерфейсу від реалізації
- •9.4 Шаблони та модульність. Простір імен
- •9.5 Фізичне розділення простору імен
- •9.6 Міжмодульні змінні та функції
- •9.7 Ініціалізація глобальних об'єктів
- •Завдання
- •Розділ 10. Контейнерні класи
- •10.1 Загальні відомості
- •10.2 Послідовні контейнери
- •Void main()
- •10.2.1 Вектори (vector)
- •Void main()
- •Void main()
- •10.2.2. Двосторонні черги (deque)
- •10.2.3 Списки (list)
- •Void main()
- •Void main()
- •10.2.4 Стеки (stack)
- •Void main()
- •10.2.5 Черги (queue)
- •Void main()
- •Void main()
- •10.2.6 Черги з пріоритетами (priority_queue)
- •Void main()
- •Void main()
- •10.3 Асоціативні контейнери
- •10.3.1 Загальні відомості про асоціативні контейнери
- •Void main()
- •10.3.2 Словники (map)
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •10.3.3 Множини (set)
- •Void main()
- •Void main()
- •Завдання
- •Розділ 11. Алгоритми
- •11.1 Ітератори
- •11.2 Функціональні об'єкти
- •Void main()
- •Void main()
- •11.3 Алгоритми
- •11.3.1 Немодифікуючі операції з послідовностями
- •Void main ()
- •Void main()
- •Void main()
- •11.3.2 Модифікуючі операції з послідовностями
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •11.3.3 Алгоритми, пов'язані з сортуванням
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •11.3.4 Узагальнені чисельні алгоритми
- •Void main()
- •Void main()
- •Завдання
- •Список літератури
Void main()
{
string s1("лесная королева"), s2("ле");
cout << "s1= " << s1 << endl;
cout << "s2= " << s2 << endl;
int i = s1.find(s2);
int j = s1.rfind(s2);
cout << "перше s2 в s1 " << i << endl;
cout << "останнє s2 в s1 " << j << endl;
cout << "перше 'о' в s1 " << s1.find('о') << endl;
cout << "останнє 'о' в s1 " << s1.rfind ('о') << endl;
cout<<"перше в s1 " << s1.find_first_of("ае") << endl;
cout<<"останнє в s1 "<< s1.find_last_of("ае") << endl;
}
Результат роботи програми:
s1= лесная королева
s2= ле
перше s2 в s1 0
останнє .s2 в s1 11
перше 'о' в s1 8
останнє 'о' в s1 10
перше в s1 1
останнє в s1 14
7.2.3 Порівняння частин рядків
Для порівняння рядків застосовуються перевизначені операції відношення, а якщо потрібно порівнювати частини рядків, використовується функція compare:
int compare(const string& str) const;
int compare(size_type pos1, size_type n1,
const string& str) const;
int compare(size_type pos1, size_type n1,
const string& str, size_type pos2, size_type n2) const;
Перша форма функції порівнює два рядки повністю і повертає значення, менше 0, якщо рядок, який викликає функцію, лексикографічно менший str, рівний нулю, якщо рядки однакові, і більше нуля – якщо рядок, який викликає функцію, більший. Ця форма є аналогом функції порівняння рядків strstr бібліотеки С.
Друга форма функції виконує аналогічні дії, але порівнює з рядком str n1 символів рядка, який викликає функцію, починаючи з pos1. Третя форма функції порівнює n1 символів рядка, який викликає функцію, починаючи з pos1, з підрядком рядка str довжиною n2 символів, починаючи з pos2.
Аналогічні форми функцій існують і для порівняння рядків типу string з рядками старого стилю.
Приклад використання функції порівняння рядків:
#include <string>
#include <iostream>
using namespace std;
Void main ()
{
string s1("лесная королева"), s2("лe"), s3("корова");
cout << "s1= " << s1 << endl;
cout << "s2= " << s2 << endl;
cout << "s3= " << s3 << endl;
if (s2.compare(s3) > 0) cout << "s2 > s3 " << endl;
if (s1.compare(7, 4, s3) < 0)
cout << "s1[7-10] < s3 " << endl;
if (s1.compare(7, 4, s3, 0, 4 ) == 0)
cout << "s1[7-10] == s3[0-3] " << endl;
}
Результат роботи програми:
s1= лесная королева
s2= ле
s3= корова
s2 > s3
s1[7-10] < s3
s1[7-10] == s3[0-3]
7.2.4 Отримання характеристик рядків
У класі string визначено декілька функцій-членів, що дозволяють отримати довжину рядка і об'єм пам'яті, займаний об'єктом:
size_type size() const; // Кількість елементів рядка
size_type length() const; // Кількість елементів рядка
size_type max_size() const; //Максимальна довжина рядка
size_type capacity() const;//Об'єм пам'яті, займаний рядком
bool empty() const; //Істина, якщо рядок порожній
Завдання
Всі завдання необхідно реалізувати з використанням класу string.
Перелік варіантів завдань:
Варіант 1
У заданому тексті замінити слово А на слово В (довжини слів не співпадають).
Варіант 2
У заданому тексті визначити кількість слів.
Варіант 3
Маємо відомість, яка складається із 10 прізвищ. Знайти і надрукувати порядкові номера прізвищ, які задаються.
Варіант 4
У слові "лірика" після кожного складу вставити склад "ма".
Варіант 5
У тексті забрати зайві пропуски між словами, залишивши по одному.
Варіант 6
У тексті вставити між словами замість одного два пропуски.
Варіант 7
У заданому слові переставити літери в алфавітному порядку.
Варіант 8
У текстовій змінній "71D523СЕ8" поставити числа у порядку зменшення.
Варіант 9
Розділити заданий текст на рядки. У формі розділення рядків використаний символ %.
Варіант 10
У виразі "МІСЯЧНИЙ ШЛЯХ" переставити місцями слова.
Варіант 11
Дано слово "АЛГОРИТМ". Вивести його на друк у зворотному порядку.
Варіант 12
Скільки разів у тексті зустрічається задане слово? (Слова розділені пропусками).
Варіант 13
У слові "ЕЛЕКТРОНІКА" переставити літери у порядку зворотному алфавіту.
Варіант 14
Надрукувати найдовше слово із заданого тексту "Ціль статистики зосереджується в наданні фактів у найбільш стислій формі".
Варіант 15
У текстовій змінній "2С35ІА4" представити числа у порядку зростання.
Варіант 16
Існує відомість, яка складається із 10 прізвищ. Вивести на друк цю відомість у алфавітному порядку.
Варіант 17
В аналізуючому слові всі голосні літери видалити та на їх місце поставити пропуск. Вивести на дисплей початкове слово та результат перетворень.
Варіант 18
У слові "ЛІТЕРАТУРА" кожну голосну літеру виділити символом ".
Варіант 19
У заданому слові змінити місцями першу і останню літери. Вивести на екран дисплея початкове слово і результат.
Варіант 20
У заданому тексті видалити частину тексту , яка взята в дужки. (Разом з дужками).