Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_pract_OTP-2004-ukr.doc
Скачиваний:
3
Добавлен:
17.11.2019
Размер:
964.1 Кб
Скачать

5 Розв’язання задач з використанням рядкових літералів

5.1 Мета роботи

Вивчити і освоїти засоби складання програм з використанням рядкових літералів.

5.2 Підготовка до роботи

Вивчити правила організації. Необхідно знати основні особливості подання рядкових літералів в мові С++.

Рядкові літерали. На відміну від багатьох мов високого рівня в мові ''С++'' формально відсутній спеціальний рядковий тип. Замість його в ''С'' введений ''рядковий літерал''– вектор з елементами типу char, який являє собою нуль або більше символів, що мають з обох сторін подвійні лапки. У пам'яті ЕОМ цей вектор, окрім самих елементів, має завершальний символ – «'\0' – нуль-термінатор».

Очевидно, що вектор символів нічим не відрізняється від розглянутих раніше звичайних векторів. А саме: якщо рядковий літерал використовується для ініціалізації вектора, то адреса першого елемента є синонімом ідентифікатора вектора. Ініціалізація вектора з елементами char має такий вигляд :

char S8 [] =''Строка'’;//SS [0] ='c’,

//SS [1] ='t’, SS [2] ='p’, SS [3] ='o’, SS [4] ='k’, SS [5] ='a’, SS [6] =’\0’

Під час роботи з рядковими літералами доцільніше використання механізму покажчиків, тобто типу char*. Наприклад:

char *S;

S=''Строка'’;//S [0] ='c’, S [1] ='t’, S [2] ='p’, S [3] ='o’, S [4] ='k’,

//S [5] ='a’, S [6] =’\0’

Або

char*S;

S=''Строка'’

У цьому випадку змінна – покажчик S одержує початкове значення, що дорівнює адресі першого елемента рядкового літерала (символу ‘с’), розташованого в сегменті даних, де нуль–термінатор є частиною списку ініціалізаторів.

Слід звернути увагу на неприпустимість використання ідентифікатора вектора типу char в операторах привласнення з рядковими літералами.

Наприклад:

char SS [6];

SS=''cтрока’;//неприпустимо

Привласнення неприпустиме, як вже відзначалося, в зв'язку з тим, що ідентифікатором вектора є покажчик–константа. Це ще раз підкреслює привабливість використання механізму покажчиків під час роботи з рядками.

С++ містить велику кількість функцій для роботи з рядковими літералами.

Використання механізму покажчиків під час роботи з рядковими літералами зручно розглянути на прикладі деяких функцій, наведених в Додатку А.

//функція на виході видає кількість символів рядкового літерала

size_t strlen (const char*S)

{for (int i=0; S [i]; ++i);

return i;}

//функція вертає покажчик на рядковий літерал S1 де копіюється рядок S2

char strcpy (char*S1, const char*S2)

{

for (int i=0; S1 [i] =S2 [i]; ++i);

return (S1);

}

5.3 Варіанти завдань до лабораторної роботи 5

1. Визначити, скільки разів у сформованому вами рядку зустрічається сполучення символів «а» і «у».

2. Визначити, скільки разів у сформованому вами рядку повторюються обрані символи, із яких складається алфавіт.

3. Визначити, скільки разів у сформованому вами рядку зустрічається кожний із символів, і яке з заданих сполучень цих символів найчастіше зустрічається.

4. Визначити, скільки однотипних сполучень (сполучення задаються інтерактивно) міститься в переліку прізвищ студентів вашої групи.

5. Скласти програму визначення слів, що містять цифрові символи.

6. Розробити програму кодування і декодування тексту. Алфавіт містить 20 символів.

7. У довільно взятому реченні зробити заміну слів, розташованих на парних і непарних позиціях.

8. У довільно сформованому рядку, що містить 60 латинських букв, потрібно всі входження lat замінити на tal.

9. У довільно сформованому рядку, видалити перше входження ПЕКЛО, якщо таке є. Вільне місце, що утвориться, заповнити останніми символами, а в кінець додати пробіли.

10. У довільно сформованому рядку замінити на РОВ перше входження С, якщо таке є.

11. Виділити частину рядка (перше входження), розташовану між двома буквами. Букви задаються в діалозі.

12. У довільно взятому реченні надрукувати слова, в яких збігається більше двох літер.

13. У довільно взятому реченні визначити слово, що містить максимальну кількість голосних букв.

14. У довільно взятому реченні надрукувати слова в зворотньому порядку.

15. У довільно взятому реченні надрукувати слова за абеткою.

16. Визначити кількість слів у заданому реченні, а також кількість букв.

17. У довільно взятому реченні видалити всі зайві пробіли.

18. Вивести на печатку першу й останню букви кожного слова.

19. У довільно взятому реченні визначити кількість слів, в яких утримуються цифрові символи.

20. У довільно взятому реченні визначити кількість слів, які закінчуються на м'який знак.

21. У довільно взятому реченні замінити слово « республіка » на « держава ».

22. У довільно взятому реченні визначити слово, що складається з макси-мальної кількості символів.

23. У довільно взятому реченні виділити слова, взяті в лапки.

24. У довільно взятому реченні виділити однакові слова.

25. У довільно взятому реченні зробити взаємозамінювання символів, які займають парні і непарні позиції.

26. Скласти програму кодування речень. Кодування речень виконати таким чином, щоб код кожної букви слова залежав від коду першої букви. Наприклад, різниці кодів.

27. У довільно взятому реченні визначити кількість букв у кожнім слові. Надрукувати слово, що містить максимальну кількість букв.

28. У довільно взятому реченні виділити слова, що містять заданий у діалозі символ.