
- •6.050103 «Програмна інженерія»
- •Одновимірні масиви
- •Теоретичні відомостi
- •Поняття масиву
- •Оголошення масиву
- •Доступ до елементів масиву
- •Обробка масивів
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Багатовимірні масиви
- •Теоретичні відомостi
- •Обробка матриць
- •Масиви-параметри
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомості
- •Поняття рядка
- •Операції з рядками
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомості
- •Поняття структури
- •Оголошення структури
- •Доступ до полів структур
- •Обробка структур
- •Приклад програми
- •Варіанти завдань
- •Теоретичні відомостi
- •Приклад програми
- •Варіанти завдань
- •Бінарні файли
- •Теоретичні відомостi
- •Потоки і файли
- •Приклади програм
- •Варіанти завдань
- •Текстові файли
- •Теоретичні відомостi
- •Приклади програми
- •Варіанти завдань
- •Теоретичні відомостi
- •Приклади програм
- •Варіанти завдань
- •8.1 Теоретичні відомостi
- •8.2 Приклади програм
- •8.3. Варіанти завдань
- •Порядок виконання роботи та зміст звіту
- •Список рекомендованої літератури
- •1.1. Одновимірні масиви ............................................................................... 3
Контрольні питання
Яким є принцип зображення двовимірного масиву в оперативній пам’яті?
Як здійснюється доступ до елементів матриці?
У чому полягає механізм передачі масиву функції як параметра-покажчика?
Чи можна, не використовуючи циклів, поміняти місцями рядки (стовпці) матриці?
Як зображується матриця в оперативній пам’яті?
Комп’ютерний практикум № 2
РЯДКИ
Мета роботи - вивчити особливості обробки текстових рядків.
Теоретичні відомості
Поняття рядка
Рядок - це сукупність символів коду ASCІІ, яка сприймається і обробляється як єдине ціле.
Кожен рядок характеризується загальною довжиною, яка визначається при оголошенні, і поточною довжиною - кількістю символів у конкретний момент виконання програми.
Поточна довжина рядка може змінюватися в процесі роботи програми, але не може перевищувати максимального значення довжини, зазначеного при оголошенні типу.
На відміну від Pascal, в С++ немає стандартного рядкового типу даних, але поняття “рядка”, як єдиної лінгвістичної конструкції, існує. Рядком в С++ вважається символьний масив, який завершується “\0” (нуль-символом). Як і у випадку масиву, ім’я рядка є покажчиком на рядок (на його перший символ).
Рядок в С++ може як оголошуватися, так і визначатися.
Наприклад,
char str[26];
char *st;
char str[]="рядок";
#define str "Приклад рядка"
Операції з рядками
Для введення-виведення рядків у мовах програмування, зазвичай, використовуються стандартні засоби. При введенні рядка фактична його вимірність визначається автоматично при натисканні Enter.
У С++ для введення-виведення рядків можуть використовуватися декілька альтернативних засобів:
форматовані (scanf, printf);
потокові (cin, cout);
спеціальні (gets, puts).
Наприклад,
char s[14],st[19],str[16];
cin>>s; cout<<s;
scanf("%s",st);
printf("рядок - %s",st);
gets(str); puts(str);
Слід зазначити, що “\0” при введенні рядків заноситься автоматично по натисненні клавіші Enter.
Оскільки у С++ ім’я рядка є покажчиком на його перший елемент, то у цій мові заборонена операція явного присвоювання рядка рядковій змінній. Тобто, якщо мають місце оголошення
char str[26]; // змінна-рядок
char *st; // рядковий покажчик
то оператор присвоєння виду
st = "адреса"
є допустимим, а оператор
str = "помилка"
викличе повідомлення про помилку.
Рядки можуть оброблятися як цілісний об’єкт, так і посимвольно.
При посимвольній обробці доступ до конкретного символу рядка, як і до елементів масиву символів, здійснюється за індексом або за покажчиком (у С++). У цьому випадку до окремого символа рядка можна застосовувати ті ж операції, що і до змінної символьного типу.
Рядки як цілісні об’єкти можна присвоювати, порівнювати і обробляти різноманітним чином, застосовуючи стандартні функції обробки рядків.
Усі стандартні функції С++, що служать для обробки рядків, починаються з префікса str і описані у заголовному файлі string.h. Їх перелік представлений у таблиці 1.
Таблиця 1. Стандартні засоби обробки рядків у С++
Функція |
Опис |
strlen(s) |
Визначення довжини рядка |
strcpy(s1,s2) |
Копіювання рядка s2 у рядок s1. Повертає покажчик на s1. |
strncpy(s1,s2,n) |
Копіювання n перших символів рядка s2 у рядок s1. Повертає покажчик на s1. |
strcat(s1,s2) |
Склеювання (конкатенація) рядків s1 і s2 |
strncat(s1,s2,n) |
Додавання n перших символів рядка s2 до рядка s1 |
strcmp(s1,s2); |
Порівняння рядків: 0 - рівні, >0 - s1 > s2, <0 - s1< s2 |
strncmp(s1,s2,n) |
Порівняння перших n символів рядків |
strcmpі(s1,s2) |
Порівняння рядків без різниці між великими і малими літерами |
strncmpі(s1,s2,n) |
Порівняння перших n символів рядків без різниці між великими і малими літерами |
strchr(s,c) |
Пошук першого входження символу с у рядок s (встановлює покажчик на с; якщо не знайдений, то 0) |
strrchr(s,c) |
Пошук останнього входження символу с у рядок s (встановлює покажчик на с; якщо не знайдений, то 0) |
strstr(s1,s2) |
Пошук першого входження підрядка s2 у рядок s1 |
strupr(str) |
Перетворення малих літер в великі |
strlwr(str) |
Перетворення великих літер у малі |
strtod(str,p) |
Перетворення рядка в чило типу double; p – покажчик на помилковий символ |
strtol(str,p) |
Перетворення рядка в чило типу long |
strnset(str,c,n) |
Заміна заданої кількості символів на вказаний |
strrev(str) |
Інвертування рядка |
strtok(s1,s2) |
Перетворення рядка s1 в послідовність лексем, розділених символами, що містяться у рядку s2; якщо лексема знайдена, повертає покажчик на неї, інакше – NULL. Якщо у рядку декілька лексем, то визивається повторно: при першому виклику їй передається адреса s1, потім – NULL; пошук продовжується доти, доки strtok не поверне NULL
|