Основні теоретичні відомості

Завдання на лабораторну роботу

Мета роботи

Лабораторна робота №5 Програмування задач по обробці послідовності символів

Одержання знань і навиків, необхідних для роботи з символьною інформацією

1. Ознайомитися з теоретичними відомостями даної лабораторної роботи.

2. Скласти та виконати на ПЕОМ програми з таблиці 5.1 відповідно до варіанту.

3. Оформити звіт та захистити роботу.

 

Таблиця 5.1 – Індивідуальні завдання до лабораторної роботи №5

№ варіанта Номери задач № варіанта Номери задач
251, 265, 361, 802 257г, 270г, 421б, 811
252а, 266, 362, 803 257д, 270д, 421в, 812а
252б, 267, 363, 804а 257е, 312а, 421г, 812б
253а, 268, 364, 804б 258, 312б, 546а, 812в
253б, 269а, 365а, 805 259, 313, 546б, 812г
253в, 269б, 365б, 806а 260а, 314, 546в, 812д
253г, 269в, 365в, 806б 260б, 315а, 549, 813
254, 269г, 365г, 807 260в, 315б, 548, 812ж
255, 269д, 366(1), 808а 261а, 316а, 549, 813
256а, 269е, 366(2), 808б 261б, 316б, 550, 814а
256б, 269ж,366(3), 808в 262а, 316в, 551а, 814б
257а, 270а, 419, 808г 262б, 316г, 551б, 814в
257б, 270б, 420, 809 263, 316д, 551в, 815
257в, 270в, 421а, 810 264, 547а, 552а, 816

 

 

В мовах С та С++ існують достатньо розвинені засоби для обробки символьної інформації, такі як введення/виведення окремих символів та рядків, функції для визначення належності символів та рядків, об'єднання рядків, перетворення їх.

Рядок - це послідовність символів, що заключенні у подвійні лапки. Транслятор додає в кінець кожного рядка нульовий байт ‘\0’, так що програма, що переглядає рядок, може знайти її кінець.

Приклад:

cout<<“This is character string”;

Кожна рядкова константа, навіть якщо вона ідентична іншій рядковій константі, зберігається в окремому місці пам'яті.

Рядкова константа – це масив символів. Вона має тип char[]. Символьна константа уявляє собою деякий символ в лапках.

Приклад :

‘a’, ‘A’,’7’,’*’.

Символьні константи вважаються данними типу int.

Існує декілька способів визначення рядків: використання рядкових констант, масивів типу char, покажчиків на тип char та масивів, що складаються з символьних рядків.

Приклади :

1. Ініціалізація масива за допомогою рядкової константи:

char m[]=”string”;

Даний оператор ініціалізував зовнішній масив m для вказаного рядка. Аналогічно

char m[]={‘s’,’t’,’r’,’i’,’n’,’g’,’\0’};

ім'я m - покажчик на нульвий елемент масиву:

m = =&m [0]; *m = = ‘s’, *(m+1) = = m [1] = = ‘t’.

2. a) char *l = “string”;

б) static char l[] = “string”;

Опис з масивом б) визиває створення масиву з сьоми елементів (кількість символів у слові string+1 символ, що завершує ‘\0’). Кожний елемент ініціалізується сумісним символом. Компілятор розглядає ім'я l як синонім адреси першого елемента масиву, де l - константа покажчика. Можно використовувати операциї l+1 для ідентифікації наступного елемента маcиву (‘t’). Але не можна використовувати вираз ++l .

Форма з покажчиком а) також визиває створення в статичній пам'яті сім елементів для зберігання рядка. Окрім того, виділяється ще одна чарунка пам'яти для змінної l, яка є покажчиком. Спочатку ця змінна вказує на початок рядка, але її значення може змінюватися. В даному випадку, використовуючи операції збільшення, ++l можно посилатися на елемент ‘t’. Таким чином, у випадку а) ініціалізовано одну змінну типу покажчик.

Приведемо приклад явного задання розміру пам'яти.

Приклад :

char l[7] = “string”;

char name [81];

Масив name буде заповнюватись у процесі роботи, саме тому резервується 80 символів. Якщо кількість елементів в name буде менш ніж 80, то невикористані елементи автоматично ініціалізуються символом нуль.