Лекция: Лабораторна робота 6.

Програмування з використанням записів

Мета роботи. Познайомитися з поняттям «стринг» і виробити навички роботи із символьною інформацією в мові програмування Pascal навчитися використовувати рядки символів і множини при рішенні задач.

Змінні типу String аналогічні масивам типу Char. Їхньою відмінністю є те, що число символів (довжина рядка) може динамічно змінюватися в інтервалі від одиниці до заданого верхнього значення.

Перед виконанням роботи необхідно ознайомитися з правилами опису і використання рядків, припустимих операцій над ними, що відповідають стандартними процедурами і функціями.

Приклад. Дано текст, слова в якому, можуть розділятися пробілами, комами, точками. Потрібно надрукувати всі слова з подвоєною буквою «н».
Етапи рішення задачі:

1. Розіб'ємо задачу на кілька блоків
а) Формування тіла програми, оголошення змінних;

program example7; var st, st1:string; i,j,k,n:integer; flag:boolean; const znak=[' ','.',',',':',';','!','?']; t st1i,j,k,nflag

б) Уведення тексту;

writeln('Уведіть текст'); readln(st);
в) Очищення тексту від «непотрібних» символів до першого слова;

repeat

while st[1] in znak do delete(st,1,1);
г) Обчислення довжини першого слова;

i:=1 while (not (st[i] in znak)) and (i<=length(st)) do inc(i); st1:=copy(st,1,i-1); flag:= false;

д) Пошук у слові букви «н»;

while (pos('н',st1)>0) and (not flag) do begin
е) Підрахунок букв, що стоять поруч

j:=pos('н',st1); n:=j; k:=0; while st1[n]='н' do begin inc(n); inc(k); end; if k=2 then flag:=true;delete(st1,j,k)

end;
ж) Друк знайденого слова;

if flag then writeln(copy(st,1,i-1));
з) Видалення першого слова;

delete(st,1,і);

і) Якщо текст не закінчився повернення до пункту (в).

until st='';

2. Реалізуємо ці блоки на Паскале. Приведемо програму цілком:

program example7;var st, st1:string; i,j,k,n:integer; flag:boolean;const znak=[' ','.',',',':',';','!','?']; begin writeln('Уведіть текст'); readln(st); repeat while st[1] in znak do delete(st,1,1); i:=1; while (not (st[i] in znak)) and (i<=length(st)) do inc(i); st1:=copy(st,1,i-1); flag:= false; while (pos('н',st1)>0) and (not flag) do begin j:=pos('н',st1); n:=j; k:=0; while st1[n]='н' do begin inc(n); inc(k); end; if k=2 then flag:=true;delete(st1,j,k)end;if flag then writeln(copy(st,1,i-1)); delete(st,1,i);until st='';end.

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

1. Як описуються строкові змінні?

2. Яка максимальна довжина рядка припустима в Pascal?

3. Які операції припустимі над строковими даними?

4. У чому відмінність строкової змінної від масиву символів?

5. Які стандартні процедури і функції для роботи з рядками ви знаєте?

6. Що виведе функція Copy(x,Pos(' ',x)+1,18), якщо x='Сила є — розуму не треба'?

7. Чому дорівнює значення x[0] після присвоювання x:='питання'?

Задачі

Обробка тексту: У наступних завданнях під словом «текст» розуміється рядок символів, що розділені пробілами, ",", ".", "!", "?", ";" ,":" (одним чи кількома).

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

2. Скласти програму циклічної перестановки букв у словах тексту так, що i-я буква слова стає i+1-ої, а остання — першої.

3. У кожнім слові тексту заміните "а" на букву "е", якщо "а" стоїть на парному місці, і замінити букву "б" на сполучення "ак", якщо "б" стоїть на непарному місці.

4. Ворошиловград одержав нову назву — місто Луганськ. Написати програму, що здійснює в деякому тексті заміну слова «Ворошиловград» словом «Луганськ» (врахувати, що слова мають різну довжину!)

5. Дано текст, що містить від 2 до 30 слів, у кожнім з який від 2 до 10 латинських букв; між сусідніми словами — не менш одного пробілу. Надрукувати всі слова, відмінні від останнього слова, попередньо перетворивши кожне з них за наступним правилом: 1) перенести першу букву в кінець слова; 2) перенести останню букву в початок слова.

6. Відредагувати задане пропозиції тексту, видаляючи з нього всі слова з непарними номерами і перевертаючи слова з парними номерами. Наприклад, HOW DO YOU DO -> OD OD

7. Дано текст. Надрукувати всі слова, відмінні від останнього слова, попередньо перетворивши кожне з них за наступним правилом: 1) залишити в слові тільки перші входження кожної букви; 2) якщо слово непарної довжини, то видалити його середню букву

8. Написати програму для підрахунку суми місць, на яких у словах тексту розташована задана буква.

9. Скласти таблицю слів даного тексту, що починаються з букви "А", із указівкою числа повторень кожного слова.

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

11. Скласти програми для перекладу арабських чисел у римські і для зворотної операції. Наприклад, 255 = CCLV = сто + сто + п'ятдесят + п'ять.

12. Автоморфними називаються числа, що містяться в останніх розрядах їхнього квадрата. Наприклад: 52=25, 252=625. Скласти програму для знаходження автоморфних чисел.

13. Підрахувати, скільки букв треба виправити в слові Х, щоб вийшло слово Y (Х,Y — слова однакової довжини).

14. Яке мінімальне число букв необхідно замінити в слові X для того, щоб воно читалося однаково як зліва на право так і навпаки?

15. Скласти програму для підрахунку числа однакових букв у словах X і Y рівної довжини, що розташовані на тих самих місцях.

16. Задано визначену кількість конкретних сполучень букв (наприклад, УЩ, ЮЩ і ін.). Визначити, скільки таких груп символів міститься в тексті, що вводиться з клавіатури.

17. З клавіатури вводиться текст. Підрахувати і вивести на друк кількість слів тексту, що починаються з голосної.

еще рефераты
Еще работы по информатике