program q178073a;
{ функция находит последнее вхождение в строке s подстроки substr
возвращает найденную позицию или 0, если подстрока substr не найдена в строке s
}
function LastPos( substr: String; s: String): byte;
var nS, nSub, p, i : integer;
ok : boolean;
begin
nS := ord( s[0] ); { длина строки s }
nSub := ord( substr[0] ); { длина искомой подстроки substr }
p := nS - nSub; { отступаем от конца строки s на длину искомой подстроки }
while p >= 0 do begin { пока не проверили всю строку s }
ok := true; { предполагаем совпадение }
for i := 1 to nSub do
if substr[i] <> s[p+i] then begin
ok := false; { нет, не совпало }
break;
end;
if ok then begin { нашли последнее вхождение }
LastPos := p+1; { возвращаем позицию }
exit;
end;
dec( p ); { в данной позиции не совпало, переходим к предыдущей }
end;
LastPos := 0; { подстрока не найдена, возвращаем 0 }
end;
procedure test( substr, str: string );
var n: byte;
begin
n := LastPos( substr, str );
if n > 0 then
writeln( 'Позиция последнего вхождения подстроки "', substr,
'" в строку "', str, '" = ', n )
else
writeln( 'Подстрока "', substr, '" не найдена в строке "', str, '"' );
end;
begin
test( '123', 'asdf123123qwer12312zx' );
test( '123', '123asfjkafj' );
test( '123', 'asfjkafj123' );
test( '123', 'asfjkafj' );
test( '123', '12' );
end.
Натуральные числа записываются при помощи повторения этих цифр. При этом, если большая цифра стоит перед меньшей, то они складываются (принцип сложения), если же меньшая — перед большей, то меньшая вычитается из большей (принцип вычитания).
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.