Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка з програмування (школа).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.36 Mб
Скачать

Задача № 377

Умова: Нехай дано деякий текст. Обчислити, скільки разів повторюється наперед заданий символ а.

Розв 'язання. Дня розв'язання задачі, по-перше, необхідна рядкова величина для зберігання тексту (для зберігання великого тексту можна зарезервувати масив). Для спрощення задачі будемо вважати, що текст має довжину не більше 255 символів, тобто для його зберігання достатньо одного рядка. Крім цього, нам необхідна змінна символьного типу для зберігання заданого символу а, кількість яких ми будемо обчислювати.

Оскільки рядок фактично можна вважати масивом символьних величин, для його обробки необхідно організувати цикл від першого до останнього символу рядка (length(St)), що буде переглядати кожен елемент рядка та порівнювати його з шуканим символом. У випадку збігу елементів, що порівнюються, лічильник збільшується на одиницю.

Програма, що реалізує описаний алгоритм, має наступний вигляд:

Program Example_377;

Uses crt;

Var і,count:word;

{і — змінна циклу, count — кількість знайдених символів}

a:char; {a — шуканий символ}

St:string; {St — даний текст}

Begin

Clrscr;

Write('Введіть текст: ');

Readln(St);

Write('Введіть шуканий символ: ');

Readln(a);

Count:=0; (Початкове значення лічильника}

For i:=1 to length(St) do

If St[i] = a Then count:=count+l;

Writeln('Шуканих символів в тексті ',count);

Readkey; {Затримка зображення на екрані}

End.

Задача № 381

Умова: У даному тексті замінити всі символи «:» на символи «-» і навпаки.

Розв 'язання. Для виконання заміни в тексті одного символу іншим слід знайдений символ (або групу символів) спочатку вилучити процедурою insert, а потім з тієї ж самої позиції вставити бажаний символ (або групу символів). Зверніть увагу на те, що команди розгалуження повинні бути обов'язково вкладеними, тому що якщо ми знайдемо символ «:»і виконаємо заміну, то на його місці з'явиться символ «-», який теж підлягає заміні (для символу «-» міркування будуть такими самими).

У результаті текст після закінчення роботи програми відтвориться у початковому вигляді. Програма має вигляд:

Program Example_381;

Uses crt;

Var і:word; {і - змінна циклу} St:string; {St - даний текст}

Begin

Clrscr;

Write('Введіть текст: ');

Readln(St);

For i:=1 to length(St) do

If St[i] = ':' Then

Begin Delete (St, i, 1) ; Insert ('-'St,1) ; End

Else

If St[i]='-' Then

begin Delete(St,i,1); Insert(':',St,1); end;

Writeln('Результуючий рядок: ',St);

Readkey;

End.

Задача №382

Умова: У даному тексті замінити всі символи «.» на послідовність символів «...». Якщо у тексті зустрічаються підряд три крапки, то залишати їх без змін.

Розв'язання: В цій задачі після виконання замін збільшується довжина рядка, причому після шуканого символу становиться такий самий. Тому, якщо цикл організувати, як і в попередньому випадку, весь текст, починаючи з першої крапки, замшиться на крапки (подумайте чому). Тому в цій задачі доцільно скористатися циклом з передумовою, що дозволяє змінну циклу змінювати на будь-який крок (а не тільки на одиницю, як в циклі з параметром). Для того, щоб не виконувати заміну у випадку наявності трьох крапок в тексті, будемо перевіряти не тільки поточну, а й наступну за нею позицію (не забудьте при цьому про можливість виходу за межі рядка!!!). Останній символ рядка тут перевірятиметься окремо.

Зверніть увагу, що у випадку, коли довжина результуючого рядка буде складати більш ніж 255 символів, зайві символи будуть втрачатися. Для спрощення задачі ми їх не враховуємо, але для сильних учнів можна запропонувати організувати збереження цих символів у додатковому рядочку. Програма, що реалізує описаний алгоритм, має вигляд:

Program Example_382 ;

Uses crt;