. Задание. Заполнить трассировочную таблицу. f1 = 1; f2 = 1; n = 10; i = 0
while i < n - 2:
sum = f1 + f2
f1 = f2
f2 = sum
i = i + 1
print(f2)
Начальные значения: f1 = f2=1, i = 0, n=10
i < n - 2
sum = f1 + f2
f1 = f2
f2 = sum
i = i + 1
0<10-2
sum =1+1=2
f1 =1
f2 =2
i = 0+1=1
1<8
sum =1+2=3
f1 =2
f2 =3
i =1+1=2
sum =
f1 =
f2 =
i =
sum =
f1 =
f2 =
i =
sum =
f1 =
f2 =
i =
sum =
f1 =
f2 =
i =
sum =
f1 =
f2 =
i =
sum =
f1 =
f2 =
i =
sum =
f1 =
f2 =
i =
!
var
s, wd: string;
n, pt: integer;
begin
Write('Введите строку: ');Readln(s);
n := Length(s); pt := 1;
repeat
// Пропускаем все символы до первого непробельного
while pt <= n do
if s[pt] = ' ' then Inc(pt) else break;
if pt <= n then begin
// Выделяем очередное слово
wd := '';
while pt <= n do
if s[pt] <> ' ' then begin wd := wd + s[pt]; Inc(pt) end
else break;
if (wd <> '') and (LowCase(wd[1]) in ['м'..'я']) then Writeln(wd)
end
until pt > n;
end.
Тестовое решение:
Введите строку: **А роза упала на лапу Азора **
роза
упала
на
А вот так версия 3.0 позволяет решить задачу "по-современному":
// PascalABC.Net 3.0, сборка 1066
begin
var s:=ReadString('Введите строку: ');
Writeln('Результат: ',s.ToWords(' ').Where(x->x[1] in ['м'..'я']))
end.
Тестовое решение:
Введите строку: **А роза упала на лапу Азора **
Результат: [роза,упала,на]