Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Лабораторна робота 6



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

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

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

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

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

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

program example7; var st, st1:string; i,j,k,n:integer; flag:boolean; const znak=[' ','.',',',':',';','!','?']; Призначення змінних: t - містить уведений текст, st1 - зберігає перше слово тексту, i,j,k,n - допоміжні змінні, flag - указує, що дане слово шукане.

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

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. З клавіатури вводиться текст. Підрахувати і вивести на друк кількість слів тексту, що починаються з голосної.





Дата публикования: 2015-04-09; Прочитано: 1681 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...