Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MV1339.pdf
Скачиваний:
9
Добавлен:
10.02.2016
Размер:
529.51 Кб
Скачать

Лабораторна робота № 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 слів . Замінити в кожнім слові першу й останню букви символом «*» . Слова розставити за абеткою.

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