Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.doc
Скачиваний:
77
Добавлен:
07.03.2016
Размер:
1.78 Mб
Скачать

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

У заданому тексті видалити частину тексту , яка взята в дужки. (Разом з дужками).