Лабораторна Робота № 16

Тема: Turbo Pascal. Алгоритми і програми для обробка текстів.

 

Мета: Формування умінь створення програм для обробки текстів алгоритмічною мовою високого рівня Turbo Pascal.

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

Дані типу рядок – це послідовність довільних символів, взятих з обох боків штрих-символами. Змінну типу рядок оголошують за допомогою слова string:

var <змінна>: string[n],

де n – довжина рядка, n<256. Довжину рядка можна не зазначати.

Над даними типу рядок визначені такі стандартні функції та процедури:

length (<рядок>) - визначає кількість символів у рядку;

copy (r,m,n) - дає n символів рядка r, починаючи з символу з номером m;

concat (r1,r2,…,rn) - з’єднує рядки r1,…,rn в один рядок;

pos (r1,r2) - визначає номер символу, з якого починається входження рядка r1 у рядок r2.

insert (r1,<змінна>,n)–вставляє рядок r1 у рядок, заданий змінною,починаючи з позиції n;

delete (<змінна>,m,n) - вилучає n символів з рядка, заданого змінною, починаючи з позиції m;

str (<число>,<змінна>) – переводить числове дане в дане типу рядок;

val (r1,s1,s2) – засилає у числову змінну s1 числовий образ рядка r1.

Є два способи опрацювання даних типу string. Перший – можна опрацьовувати весь рядок як єдине ціле, застосовуючи до нього функції та процедури, другий – можна розглядати рядок як масив, складений з елементів-символів, і опрацьовувати його за правилами роботи з елементами масиву.

 

Хід роботи

2.1 Постановка задачі

 

Заданий текст, в якому слова розділені крапкою з комою. Вивести на друк слова тексту. Знайти кількість слів в тексті. Якщо слово містить букву “y”, то вивести це слово і вказати, на яких позиціях вона розташована. При відсутності букви “y” в слові вивести це слово і повідомлення «Букви “y” в слові немає». Скласти графічний алгоритм і програму для розв’язування даної задачі.

 

2.2 Графічний алгоритм показаний на рис. 16.1

 

2.3 Таблиця ідентифікації змінних

 

Змінна slovo rad ksliv pos1 posy
Ідентифікатор slovo rad ksliv pos1 posy

 

2.4 Програма мовою Pascal та результати обчислень

 

Program S_L{sumvol};

Var

pos1,posy:integer;

slovo,rad:string;

ksliv:integer;

Begin

writeln('Введіть текст, в якому слова розділені

символом ";":');

read(rad);

ksliv:=0;

while pos(';',rad)>0 do

begin

pos1:=pos(';',rad);

if pos1=1 then rad:=copy(rad,pos1+1,length(rad));

 

 

 
 

 

 


так

 

 

ні

 

ні

 

 

так

 

 
 

 


ні

 

 

так

 

Рисунок 16.1 – Графічний алгоритм

 

 

if pos1>1 then

begin

slovo:=copy(rad,1,pos1-1);

rad:=copy(rad,pos1+1,length(rad));

posy:=pos('у',slovo);

write('слово: ',slovo);

if posy>0 then

writeln(' ---> буква "у" в слові розташована на

позиції ',posy)

else writeln(' ---> букви "у" в слові немає ');

end;

ksliv:=ksliv+1;

end;

writeln('Кількість слів у тексті, розділених

символом ";" =',ksliv);

End.

 

Введіть текст, в якому слова розділені символом ";":

цибуля;огірочок;квасоля;грушка;морква;петрушка;

слово: цибуля ---> буква "у" в слові розташована на

позиції 4

слово: огірочок ---> букви "у" в слові немає

слово: квасоля ---> букви "у" в слові немає

слово: грушка ---> буква "у" в слові розташована на

позиції 3

слово: морква ---> букви "у" в слові немає

слово: петрушка ---> буква "у" в слові розташована

на позиції 5

Кількість слів у тексті, розділених символом ";" = 6

3 Контрольні запитання

  1. Як оголошуються символьні змінні мовою Turbo Pascal?
  2. Скільки символів може міститись в одному програмному рядку?
  3. Як визначити кількість символів в тексті мовами Turbo Pascal?
  4. Яким програмним засобом виконується перегляд тексту по одному чи по m символів мовою Turbo Pascal?

 

Варіанти завдань наведені нище:

 

16.1. В заданому тексті знайти і вивести на друк цифри, які містяться в ньому, і їх кількість.

16.2. В заданому тексті знайти і вивести на друк кількість і номери позицій букви “А”, які містяться в ньому.

16.3. В заданому тексті знайти і вивести на друк кількість цифр і кількість букв, які містяться в ньому.

16.4. Дано текст. Підрахувати кількість малих латинських букв, які містяться в ньому до 10-го символа включно. На друк вивести ці букви і обчислену кількість.

16.5. Дано текст. Вияснити чи є він індетифікатором. Інде-тифікатор - це послідовність букв і цифр, які починаються з букви.

16.6. Дано текст. Вияснити, чи є він числом. Від’ємні числа містять на початку знак мінус.

16.7. Якщо в заданому тексті немає символа “*”, то залишити його без зміни. В противному випадку кожну латинську букву, що розташована перед першим символом “*”, замінити на крапку.

16.8. Дано текст. Якщо він не містить символа “+”, то залишити його без зміни. В противному випадку кожну цифру, яка розташована перед першим символом “+”, замінити на кому.

16.9. Дано текст, який містить букви і пропуски. Якщо в ньому немає слова “весна”, то залишити його без зміни. В противному випадку замінити всі слова “весна” на “зима”. Словом вважати послідовність букв розділених пропусками.

16.10. Дано текст, який містить букви і пропуски. Знайти і надрукувати слова і їх кількість, довжина яких перевищує 5 символів. Словом вважати послідовність букв, розділених про-пусками.

16.11. Дано текст, який містить букви і пропуски. Знайти і надрукувати слова і їх кількість, які містять по 2 букви “А”. Словом вважати послідовність букв, розділених пропусками.

16.12. Дано текст, який містить букви і пропуски. Знайти і надрукувати слова і їх кількість, які закінчуються буквосполу-ченням “ати”. Словом вважати послідовність букв, розділених пропусками.

16.13. Дано текст, який містить букви і пропуски. Знайти слова, які закінчуються буквосполученням “ати”, і замінити це буквосполучення на “али”. Словом вважати послідовність букв, розділених пропусками.

16.14. Дано текст, який містить букви і 2 символи “%”. Знайти кількість букв, розташованих між першим і другим символами “%”.

16.15. Дано текст, який містить букви і пропуски. Знайти і надрукувати слово, в якому міститься найбільше символів “А”. Словом вважати послідовність букв, розділених пропусками.

16.16. Дано текст. Якщо 5-й символ в ньому буква, то замінити його на символ “5”. В противному випадку залишити його без зміни.

16.17. Дано 3 символьні послідовності. Сформувати і надрукувати символьну послідовність, яка складається з 5 перших символів кожної послідовності.

16.18. Дано текст, в якому міститься символ “+”. Поміняти місцями послідовність символів, розташованих до нього, з послідовністю після нього. Заданий і перетворений тексти надрукувати.

16.19. Дано текст, який містить букви і пропуски. Знайти і надрукувати слово, яке складається з найменшої кількості символів. Словом вважати послідовність букв, розділених пропусками.

16.20. Дано текст. Поміняти місцями 5-й і 7-й символи. Заданий і перетворений тексти надрукувати.

16.21. Дано 2 символьні послідовності. Вилучити з першої послідовності кожний символ, що належить і другій послідовності. Надрукувати задані і утворену послідовності.

16.22. Дано текст. Відомо, що в ньому міститься щонайменше одна кома. Вивести на друк заданий текст та номер останньої по порядку коми.

16.23. Дано текст. Вияснити, чи містяться в ньому пари сусідніх букв “ав” або “ва”. Вивести на друк порядкові номери їх перших букв.

16.24. Дано текст. Вияснити, чи містяться в ньому пари сусідніх однакових букв. Вивести на друк ці пари і порядкові номери їх перших букв.

16.25. Дано текст. Перетворити його, вилучивши кожний символ “*” з тексту, і повторити кожний символ, відмінний від “*”.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: