Основні теоретичні відомості
Завдання на лабораторну роботу
Мета роботи
Лабораторна робота №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, то невикористані елементи автоматично ініціалізуються символом нуль.