Здесь пустое слово «» означает конец исходного текста.
Для вывода исходных данных и результатов их обработки можно принять следующий сценарий:
исходный текст:
<строка1>
… …
<строкаn>
слова нечетной длины:
<слово1>
… …
<словоm>
Решение поставленной задачи на ЭВМ можно получить с помощью следующих алгоритма и программы на Бейсике, в которых в виде вспомогательного алгоритма и подпрограммы выделена обработка каждой отдельной строки текста:
' выделение слов нечетной длины ' алг «слова нечетной длины»
print «исходный текст:» ' вывод «исходный текст;»
n = 0: s2$ = «» ' n = 0: s2$ = «»
print «исходный текст:» ' вывод «исходный текст:»
do ' цикл
read str$ ' чтение_строки
if str$ = «» then exit do ' при str$ = «» выход
print str$ ' вывод_строки
gosub stroka ' обработка_строки
loop ' кцикл
end ' кон
stroka: ' обработка строки ' алг «обработка строки»
dl = len(sfr$) ' dl = длuнa(str$)
print «слова нечетной длины:» ' вывод «слова нечетной длины:»
sl = 0 ' sl=0
for k=l to dl ' от k = 1 до dl цикл
if str$(k) 0 «» then ' если str$(k) ¹ «» то
sl = sl + 1 ' sl = sl + 1
|
|
elseif sl > 0 then ' инеc sl > 0 то
p = k - sl + 1 ' p = k - sl + 1
slv$ = mid$(str$,p,sl) ' slv$ = cpeдн.(str$,p,sl)
n = n + 1 ' n = n + 1
if n = 2 then ' если n = 2 то
sl2$ = slv$ ' sl2$ = slv$
elseif slv$ 0 sl2$ then ' инеc slv$ ^ sl2$ то
if (sl/2)*2= si then ' если (sl/2) *2 = sl то
print slv$ ' вывод slv$
end if ' кесли
end if ' кесли
sl = 0 ' sl = 0
end if ' кесли
next k ' кцикл
return ' кон