АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Пояснення до алгоритму. 1.Використовується ознака р, що вказує на те, чи була відкрита кругла дужка:

Читайте также:
  1. Загальні пояснення до виконання реферату
  2. Ілюстрації. Кількість ілюстрацій повинна бути достатньою для пояснення тексту, що викладається.
  3. На відміну від прогнозу і гіпотеза і версія можуть бути націлені (і в більшості випадків націлюються) не на повідомлення про якесь явище, а на його пояснення, хоча і можливе.
  4. Покрокове виконання алгоритму
  5. Поняття алгоритму
  6. Поняття алгоритму. Основні властивості алгоритмів
  7. Пояснення вчителя.
  8. Пояснення гри. Вибір способу шикування гравців для пояснення гри і місце керівника.
  9. Пояснення до алгоритму
  10. Пояснення до алгоритму
  11. Пояснення до алгоритму
  12. Пояснення до алгоритму

1. Використовується ознака р, що вказує на те, чи була відкрита кругла дужка:

2.На початку передбачається, що дужка ще не зустрічалася ( р=0 ).

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

а) пропустимо всі символи у рядку, що передують відкритій дужці;

б) виберемо всі символи, починаючи з круглої відкритої дужки і закінчуючи круглою відкритою дужкою у інший рядок.

Оформимо наші міркування функцією.

Function Dugka (S: string var i: byte): string;

var s1:s tring;

Begin

while (i<=begin (S)) and (S[i]<>’(‘)

do i:=i+1;

s1:=’ ‘;

while (i<=length(S)) and (S[i] i<>’)’) do

Begin

s1:=s1+s[i];

i:=i+1;

end;

if i>length(S)

then Dugka:=s1

else Dugka:=s1+’)’;

end;

 

Запропонований варіант має ще таку перевагу: якщо буде помилково задано рядок, що містить непарні дужки (є відкрита та немає закритої), резудьтат буде порожнім рядком. Зверніть також увагу на те, що змінна, яка допомагає рухатися по рядку, передається у функцію як параметр-змінна (var i: byte), допомагає використовувати цю функцію для пошуку всіх правильних пар дужок (відкрита дужка передує закритій) з уміщеним в них текстом.

Алгоритм мовою Паскаль:

Program Example1;

{ тут необхідно розмістити наведену вище функцію}

var S: string;

j: byte;

Rez: string;

Begin

write (‘ введіть рядок ‘);

readln (s);

j:=1;

Rez:=’ ‘;

while j<=length(S) do

Begin

Rez:=Rez+Dugka(S, j);

end;

writeln (Rez);

end.

Зверніть увагу, що оскільки змінна j передається у функцію як параметр-змінна, її не потрібно змінювати у тілі циклу while. Вона змінюється у тілі функції.

 

Приклад 2. Підрахувати кількість слів-паліндромів у рядку. Рядок є реченням, що закінчується розділовим знаком.

 

АЛГ Приклад 2(літ Т, ціл k) АРГ Т РЕЗ k ПОЧ ціл і, dl, p, літ SL, PSL dl:=довжин (Т); SL:=’ ‘ k:=0 для і від1 до dl пц якщо Razd(T[i, 1])=0 то SL:=SL+T[i, 1] інакше якщо SL ’ ‘ то PSL:=obr(SL) якщо SL=PSL то k:=k+1 все все SL:=’ ‘ все кц ДРУКУВАТИ k КІН   Призначення комірок Вихідні дані: Т – вихідний текст   Результат: К- кількість слів-паліндромів   Робочі комірки: і – індекс; dl – довжина вихідного тексту; р – ознака, що набуває двох значень: 0 або 1.   SL – для формування поточного слова; PSL – для формування слова-паліндрома.

 

У тексті може бути кілька розділових знаків, що йдуть підряд, і алгоритм це враховує.

Якщо розділовим знаком вважати тільки пробіл та використати раніше написану функцію perevorot, то розв’язання мовою Паскаль буде таким:

Program Example2;

var S, S1: string; i: word;

Begin

write (‘введіть рядок ‘);

readln (s);

i:=1;

while i<=length(S) do

Begin

{ пропуск зайвих пробілів }

while (i<=length(S) and (S[i]=’ ‘) do i:=i+1;

S1:=’ ‘;

while (i<=length(S)) and (S[i]<> ‘ ‘) do

Begin

S1:=S1+S[i];

i:=i+1;

end;

if S1=perevorot (S1)

then writeln (S1);

end;

end.

 

Приклад 3. Із заданого речення забрати зазначене слово.

АЛГ Приклад 3 (літ T, s1, Y)

АРГ T, s1

РЕЗ Y

ПОЧ ціл і, dl, dlslp, літ TSL

dl:=д овжин (Т); dlsl:= довжин (s1)

TSL:=’ ‘

для і від 1 до dl

пц

якщо Razd(T[i, l])=0

то TSL:=TSL+T[i, l]

Інакше

якщо TSL ’ ‘ і SL TSL

то Y:=Y+TSL

Все

TSL:=’ ‘

Все

кц

якщо TSL ‘ ‘ і SL TSL

то Y:=Y+TSL

Все

ДРУКУВАТИ Y

КІН

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)