Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_Lab_OP_2_v2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
872.96 Кб
Скачать
      1. Контрольні питання

  1. Яким є принцип зображення двовимірного масиву в оперативній пам’яті?

  2. Як здійснюється доступ до елементів матриці?

  3. У чому полягає механізм передачі масиву функції як параметра-покажчика?

  4. Чи можна, не використовуючи циклів, поміняти місцями рядки (стовпці) матриці?

  5. Як зображується матриця в оперативній пам’яті?

Комп’ютерний практикум № 2

РЯДКИ

Мета роботи - вивчити особливості обробки текстових рядків.

    1. Теоретичні відомості

      1. Поняття рядка

Рядок - це сукупність символів коду ASCІІ, яка сприймається і обробляється як єдине ціле.

Кожен рядок характеризується загальною довжиною, яка визначається при оголошенні, і поточною довжиною - кількістю символів у конкретний момент виконання програми.

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

На відміну від Pascal, в С++ немає стандартного рядкового типу даних, але поняття “рядка”, як єдиної лінгвістичної конструкції, існує. Рядком в С++ вважається символьний масив, який завершується “\0” (нуль-символом). Як і у випадку масиву, ім’я рядка є покажчиком на рядок (на його перший символ).

Рядок в С++ може як оголошуватися, так і визначатися.

Наприклад,

char str[26];

char *st;

char str[]="рядок";

#define str "Приклад рядка"

      1. Операції з рядками

Для введення-виведення рядків у мовах програмування, зазвичай, використовуються стандартні засоби. При введенні рядка фактична його вимірність визначається автоматично при натисканні 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]