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

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

Begin

Clrscr;

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

Readln(St); i:=1;

While i<length(St) do

Begin

If (St[i]='.') and (St[i+1]<>'.') Then

begin Insert(*..',St,i+l); i:=i+2; end;

i:=i+1;

End;

If St[length(St)]='.' Then St:=St+'..';

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

Readkey;

End.

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

  • Прочитати сторінки 120—123 запропонованого підручника;

  • Задачі № 378, № 380, № 385, № 389.

УРОК 29. Робота з рядковими величинами

Мета уроку: навчити розв'язувати задачі з використанням рядкових величин.

На початку уроку бажано провести опитування (письмово чи усно) по матеріалах попереднього уроку (означення та опис рядкових величин, стандартні процедури та функції для роботи з рядковими величинами). Далі рекомендується розглянути задачі з обробки рядкових величин.

Задача № 387

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

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

Program Example_387;

Var і:byte; {і - змінна циклу}

St,Rez:string; {St - даний текст, Rez - результуючий (перегорнутий) рядок}

Begin Clrscr;

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

Readln(St);

Rez:= ''; {Очищення рядка}

For і:- length(St) downto 1 do

Rez := Rez+St[i]; {Перегортання рядка}

If Rez = St Then Writeln('Слово є паліндромом.')

Else Writeln("Слово не є паліндромом.');

Readkey;

End.

Задача №389 (2)

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

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

Cоpy(St,i,3) .

Порівнюючи виділені (скопійовані) символи з еталоном, нарощуємо лічильник при виконанні поставлених умов. Програма має вигляд:

Var і:byte; {і - змінна циклу}

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

Count:byte; {Count - лічильник послідовностей}

Begin

Clrscr;

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

Readln(St);

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

For i:=1 to length(St)- 2 do

If Copy(St,i,3) = 'абв' Then count:=count+1;

Writeln('Кількість шуканих послідовностей: ',count);

Readkey;

End.