Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Програмування з використанням записів
Мета роботи. Познайомитися з поняттям "стринг" і виробити навички роботи із символьною інформацією в мові програмування Pascal навчитися використовувати рядки символів і множини при рішенні задач.
Змінні типу String аналогічні масивам типу Char. Їхньою відмінністю є те, що число символів (довжина рядка) може динамічно змінюватися в інтервалі від одиниці до заданого верхнього значення.
Перед виконанням роботи необхідно ознайомитися з правилами опису і використання рядків, припустимих операцій над ними, що відповідають стандартними процедурами і функціями.
Приклад. Дано текст, слова в якому, можуть розділятися пробілами, комами, точками. Потрібно надрукувати всі слова з подвоєною буквою "н".
Етапи рішення задачі:
1. Розіб'ємо задачу на кілька блоків
а) Формування тіла програми, оголошення змінних;
б) Уведення тексту;
writeln('Уведіть текст'); readln(st);
в) Очищення тексту від "непотрібних" символів до першого слова;
while st[1] in znak do delete(st,1,1);
г) Обчислення довжини першого слова;
д) Пошук у слові букви "н";
while (pos('н',st1)>0) and (not flag) do begin
е) Підрахунок букв, що стоять поруч
end;
ж) Друк знайденого слова;
if flag then writeln(copy(st,1,i-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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!