- •ВВЕДЕННЯ
- •Лабораторна робота № 1
- •1.1.Теоретична частина.
- •1.2. Запитання для контролю.
- •1.3. Завдання до лабораторної роботи № 1.
- •Лабораторна робота № 2
- •Лабораторна робота № 3
- •1.1.Теоретична частина.
- •1.2.Завдання до контрольної роботи № 3
- •Лабораторна робота № 4
- •1.1.Теоретична частина.
- •1.2. Запитання для контролю.
- •1.3. Запитання для контролю
- •1.4. Завдання до лабораторної роботи № 4
- •Лабораторна робота № 5
- •1.1.Теоретична частина
- •1.2 Запитання для контролю.
- •1.3.Завдання до контрольної роботи № 5
- •Лабораторна робота № 6
- •1.1.Теоретична частина
- •1.2.Запитання для контролю
- •1.3.Завдання до контрольної роботи № 6
- •Лабораторна робота № 7
- •1.1.Теоретична частина
- •1.2. Запитання для контролю
- •1.3. Завдання до лабораторної роботи№ 7
- •Лабораторна робота № 8
- •1.1.Теоретична частина
- •1.2. Запитання для контролю
- •1.3. Завдання для контрольної роботи № 8
- •Лабораторна робота № 9
- •1.1.Теоретична частина
- •Литература.
Лабораторна робота № 8
Обробка символьних і строкових даних
1.1.Теоретична частина
Символьний рядок – послідовність символів, укладених у подвійних лапках. Символьний рядок розглядається як масив символів, кожен елемент якого
представляє окремий символ.
Символічний рядок має таку форму представлення:
“символи ”
<символи > - це довільна (у тому числі нульова) кількість символів, за винятком символів подвійні лапки (“) і зворотний слеш (\). Щоб використовувати ці символи усередині символьного рядка, потрібно представити їх за допомогою відповідних спеціальних символів, як показано на наступних прикладах:
“Це символьний рядок \n” “Перший \\ Другий” “Наступний рядок порожній:” “”
Символьні рядки, що розташовані один за одним і не розділені нічим, крім символів-пробілів, об’єднуються компілятором мови Сі в один рядок.
Наприклад, прграмма: main()
{
char *p;
p = “ приклад того, як можна” “автоматично \ здійснювати об’єднання” “рядків у дуже довгий рядок : \n”
“така форма запису може підвищити” “наочність прграммы. \n”;
printf(“%s”,p);
}
Кожен символ символьного рядка (у тому числі кожен спеціальний символ) зберігається в окремому байті оперативної пам'яті.
Нульовий символ (“\0”) автоматично додається як останній байт символьного рядка
іслуже ознакою його кінця.
Кожен символьний рядок у програмі розглядається як окремий обьект; якщо в програмі утримується два ідентичні символьні рядки, то вони будуть займати дві різні області оперативної пам'яті.
Тип символьного рядка – масив елементів типу CHAR. Число елементів у масиві дорівнює числу символів у символьному рядку плюс один, оскільки нульовий символ (ознака кінця символьного рядка) теж є елементом масиву.
Функції обробки рядків
Прототипи усіх функцій роботи з рядками утримуються в бібліотеці <string.h>. Вего цих функцій 23. Розглянемо декілька найбільш важливих з них.
Відомо, що якщо як аргумент функції передається ім'я масиву, то це ім'я масиву визначає адресу початку масиву (покажчик на нульовий елемент масиву). Тому при обробці символьної інформації доцільно використовувати покажчики.
Порівняння рядків – використання функції STRCMP
Опис Result = STRCMP (S1,S2)
S1, S2 – покажчики на порівнювані рядки. Функція STRCMP повертає значення типу int. RESULT < 0 якщо s1 < s2
RESULT == 0 якщо s1 == s2 RESULT > 0 якщо s1 > s2
Приклад Завдання: ввести 2 рядка і порівняти їх
Програма |
|
|
#include <stdio.h> |
/*стандартна бібліотека введення - виводу*/ |
|
#include <string.h> |
/*бібліотека роботи з рядками*/ |
|
main( ) |
|
|
{ |
|
|
char S1[10]; |
|
|
char S2[10]; |
|
|
int result; |
|
|
puts("Введіть 2 рядка"); |
|
|
scanf("%s%s",S1,S2); |
/*введення даних*/ |
|
result = strcmp (S1,S2); |
/*порівняння введених рядків S1 і S2*/ |
if (result == 0) puts("Рядки рівні");
if (result < 0) puts("Рядок S1 менше S2"); if (result > 0) puts("Рядок S1 більше S2");
}
Копіювання одного рядка в інший
Для коприрования одного рядка в інший використовується функція STRCPY.
Опис: char * STRCPY( char *SP , char *SI),
де SP – покажчик на рядок приймач SI – покажчик на рядок джерела.
Функція strcpy копіює символи, починаючи з адреси SI доти поки нульовий байт рядка джерела не буде скопійований у рядок приймача.
Приклад Завдання: скопіювати один рядок в інший
Програма |
|
#include <stdio.h> |
|
#include <string.h> |
|
main( ) |
|
{ |
|
char str1[10]; |
/*рядок джерело*/ |
char str2[10]; |
/*рядок приймач*/ |
puts("Уведіть рядок || джерело"); scanf("%s",str1);
strcpy(str2,str1); /*копіювання символів з str1 у str2*/ printf("%s",str2);
}
Функція пошуку першого входження в рядок заданого символу – STRCHR
Опис: NP = STRCHR (ST,P).
Де ST – покажчик на заданий рядок.
P- заданий символ (символ по якому ведеться пошук).
NP – функція повертає покажчик на адресс символу першого входження символу в заданому рядку.
Функція пошуку останнього входження в рядок заданого символу – STRRCHR (аналогічний опис і обьява)
Функція для визначення довжини рядка - STRLEN
STRLEN – визначає кількість активних символів у рядку (без нульового байта);
Опис: Len = STRLEN(SP),
де SP – покажчик на рядок
Len – значення, що повертається функцією strlen. Приклад Завдання: підрахувати кількість символів у рядку. Програма
#include <stdio.h> #include <string.h> main()
{
char str[10]; int len;
puts("Уведіть рядок "); scanf("%s",str);
len = strlen(str);
printf("Кількість символів у рядку = %d",len);
}
Функція злиття рядків – STRCAT.
Опис: char *STRCAT( char *dest, char *src).
Конкатенує (об’єднує) вихідний рядок src і рядок dest, приєднуючи останній до кінця першого. Повертає dest.
Де char *dest – покажчик на рядок результату.
сhar * src – покажчик на вихідний рядок, що приєднується до кінця рядка dest. Приклад
#include <stdio.h> #include <string.h> main()
{
char src[80] ="abcdefghi"; char dst[80] ="1234567890";
printf("До: джерело = %s приймач = %s\n",src,dst); puts("Викликаємо strcat(джерело,приймач)"); strcat(dst,src);
printf("Після: джерело = %s приймач = %s\n",src,dst);
}
Результати роботи програми
До: джерело = abcdefghi приймач = 1234567890
Викликаємо strcat(джерело,приймач)
Після: джерело = abcdefghi приймач = 1234567890abcdefghi
1.2. Запитання для контролю
Як позначається символьна перемінна? Як записується символьна перемінна?
Якою функцією визначається кількість символів у символьної перемінній або константі?
Яке призначення функцій STRCMP,STRCAT,STRCPY?
1.3. Завдання для контрольної роботи № 8
Варіант |
Завдання |
Скласти схему алгоритму і програму для обробки заданого тексту. Вихідний текст і результати вивести на друк.
1.Підрахувати довжину кожного слова в тексті (20 слів).
2.Скласти список літер, якими закінчується кожне слово (20 слів).
3.У списку слів замінити всі шиплячі на ! (20 слів).
4.У тексті, що складається з 5 рядків, вивести рядки по зростанню кількості вхідних у них слів (вивести кількість слів).
5.Знайти саме довге і саме коротке слово в тексті (20 слів).
6.У 5 реченнях визначити довжину (у словах) кожного речення.
7.Дано текст і слово, знайти скільки разів дане слово зустрічається в тексті.
8.Перетворити даний текст, виключивши з нього союзи.
9.Скласти список слів (із заданого тексту), довжина яких не перевищує заданої кількості літер.
10.У довільному тексті (5 речень) виключити розділові знаки і потім розташувати всі слова тексту за абеткою.
11.Скласти програму, що виділяє задані слова з довільного тексту.
12.У тексті (30 слів) підрахувати кількість слів, що починаються з гласної літери, вивести їх на друк за абеткою.
13.У тексті (20 слів) визначити кількість літер у кожнім слові. Вивести слова тексту , упорядковані за абеткою у виді вектора. Поруч з кожним словом указати кількість літер.
14.Знайти в заданому тексті слова, що містять більш 3 -х голосних букв, спочатку роздрукувати їх, а потім замінити голосні букви символом "-" і знову роздрукувати їх.
15.У довільному тексті (30 слів) вивести на друк букви, з яких починаються слова за абеткою. Під ними розташувати слова з відповідними початковими літерами.
16.Задано три числа, що позначають число, місяць, рік. Визначити номер цього дня з початку року.
17.У довільному тексті визначити, чи маються однакові символи. Указати їх і визначити кількість повторень кожного.
18.У довільному тексті знайти повторювані слова, визначити кількість повторень кожного з них.
19.Задано текст (20 слів). Перетворити його так, щоб слова розташовувалися по зростанню кількості вхідних у них голосних.
20.Визначити кількість голосних і кількість приголосних букв, що входять у кожен рядок тексту (5 рядків).
21.У тексті знайти всі слова, що складаються з одного складу і вивести їх у стовпець, відсортувавши в міру збільшення кількості символів.
22.Одержати елементи даної послідовності символів у зворотному порядку і визначити чи маються в послідовності однакові символи.
23.Дано рядок символів. Кожне слово записати в зворотному порядку. Вивести всі слова, що збігаються за написанням у вихідному і результуючому рядках. Якщо збігів нема, вивести відповідне повідомлення.
24.У тексті російською мовою скласти список слів, що містять більше 3-х голосних букв.
25.Задано текст 20-30 слів. Розташувати всі слова за алфавітом у виді таблиці.
26.У трьох реченнях визначити кількість букв А в першому реченні і замінити їх на символ ”*”, Е - в другому і замінити їх пробілом, Н - в третьому і замінити їх ”!”. Якщо таких букв нема, вивести відповідне повідомлення.
27.Задано текст із 5 рядків. Розташувати слова кожного рядка за алфавітом.
28.Скласти список голосних букв, використовуваних у головному тексті (20слів). Літери розташувати за абеткою з указівкою їхньої кількості.
29.З даного тексту (20слів) виділити слова, що містять 3 і більш приголосних букв.
30.Задано текст, що складається з 20 слів. Слова розставити в порядку зростання їхньої довжини.
31.Задано довільний текст із 12 слів . Знайти слова , в яких не більш N літер . Інші слова вивести у виді , урізаному до N літер.
32.Підрахувати кількість шиплячих у довільному тексті, що складається з 20 слів.
33.У довільному тексті (10слів) підрахувати кількість розділових знаків кожного типу.
34.Задано довільний список з 20 слів . Вибрати з нього слова, довжина яких не перевищує 6 літер. Розташувати ці слова в порядку зростання в них кількості літер.
35.У тексті з 20 слів знайти слово з найбільшою кількістю голосних літер.
36. |
У заданому тексті з 10 слів замінити всі голосні символом ”*” і |
|
підрахувати кількість замін . |
37.Задано текст із 6-ти речень . Знайти речення з найменшою кількістю слів .
38.У заданому тексті з 10 слів підрахувати , скільки разів зустрічається частка не . Слова розташувати в алфавітному порядку .
39.У тексті з 10 слів визначити , яка з голосних букв зустрічається найчастіше . Вивести список голосних букв із указівкою їхньої кількості.
40.У довільному тексті з 10 речень замінити всі розділові знаки символом « + » . Розставити речення в порядку зростання кількості вхідних у них слів.
41.У тексті з 10 слів виписати всі слова , що починаються зі згодних букв і розставити їх за абеткою.
42.У довільному тексті з 8-ми речень підрахувати , скільки разів зустрічається союз і і замінити його на символ «*».
43.У тексті з 20 слів у самому довгому слові розставити букви за алфавітом .
44.У довільному тексті з 20 слів ,знайти слово, яке містить найменшу кількість голосних букв і замінити їх на символ « – » .
45.У довільному тексті з 10 речень визначити , який з розділових знаків зустрічається найчастіше і замінити його символом «*».
46.У довільному тексті з 10 речень , розташувати за абеткою слова в кожному реченні .
47.У довільному тексті з 10 слів виключити слова, які містять менш ніж 3-и літери . Слова, що залишилися, розташувати за абеткою .
48.Дано текст із 10 слів . Виписати слова , що починаються на букву а і розташувати їх у порядку зростання в них кількості літер.
49.Дано текст із 15 слів . Поміняти місцями саме довге і саме коротке слово .
50.Дано текст із 20 слів . Замінити в кожнім слові першу й останню букви символом «*» . Слова розставити за абеткою.