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

Var X,y,m:real;

Begin

Clrscr;

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

Readln(X);

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

Readln(Y);

If (X<=0) or (Y<0) then writeln('He коректні вхідні дані.')

else

begin

Solution(X,Y,M); {Виклик процедури}

Writeln('Тривалість польоту -> ',М:6:2);

end;

Readkey;

End.

Задача № 463

Умова: Створити підпрограму, яка б із тексту S вилучала вказаний символ х і обчислювала кількість вилучень. У програмі організувати виклик цієї підпрограми.

Розв'язування: Очевидно, що підпрограма, яка виконує дану задачу, повинна мати три формальних параметри. Позначимо їх наступним чином: S - заданий текст (змінна рядкового типу string); x - символ, що підлягає вилученню (змінна символьного типу char); count - кількість вилучень (числова змінна цілого типу, наприклад byte).

Параметр х повинен бути параметром-значенням (вхідний параметр), а параметри 5 та соип/параметрами-змінними (вихідні параметри). Рядок 5 фактично є і вхідним, і вихідним, тому що за умовою задачі саме в ньому необхідно здійснити вилучення заданих символів.

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

Оформлення основної програми, на наш погляд, не повинно викликати сумнівів. Зазначимо лише, що відповідні фактичні параметри у запропонованій програмі будуть називатися Л (заданий текст), ch (символ, що підлягає вилученню), ^(кількість вилучень). Програма, що виконує запропонований алгоритм, має наступний вигляд:

Program Example_463;

Uses crt; (Підключення бібліотеки}

Procedure Solution (x:char; var S:string; var count:byte);

Var і:byte; (локальна змінна для організації циклу}

Begin

count:=0; і:=1;

while i<=length(S) do

begin

if S[i]=x

then

begin

count:=count+l;

delete(S,i,l);

end

else i:=i+1;

end;

End;

Var a:string; ch:char; n:byte;

Begin

clrscr;

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

readln(A);

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

readln(ch);

Solution(ch,A,N);

writeln('Результуючий текст: ',A);

writeln('Кількість виконаних вилучень: ',N);

readkey;

End.

Домашнє завдання:

повторити теоретичний матеріал за попередні уроки;

задачі з запропонованого підручника №419, №424, №426, №430.

67