Страница 1 из 1
ПАСКАЛЬ-ПОИСК
Добавлено: 10 май 2007, 23:13
verty
Снова обращаюсь к светлым головам за помощью, ато самому чето вообще не получается. Народ, помогите:
дан текстовый файл input.txt, состоящий из слов, разделенных пробелами. В конце предложения стоит точка. Найти самое длинное слово-перевертыш, если таких слов несколько – рассмотреть все. Найденные слова вывести на экран и в файл output.txt.
Заранее благодарю.
Re: ПАСКАЛЬ-ПОИСК
Добавлено: 11 май 2007, 01:29
Колядин Максим
verty писал(а): Найти самое длинное слово-перевертыш, если таких слов несколько – рассмотреть все.
Один вопрос по условию: что значит слова-перевертыши?
Вот код, который соответствовал бы твоему условию, если бы там не было слова
"перевертыши":
P>S (читай условие, пропустив это слово)
Код: Выделить всё
var inp,outp: text]=' ') or (s[i]='.') then begin
s2:=''; for k:= j to (i-1) do s2:=s2+s[k];
if length(s2)>length(slovo) then slovo:=s2 else
if length(s2)=length(slovo) then slovo:=slovo+' '+s2;
j:=i+1;
end;
end;
write(outp,s2);
close(inp); close(outp);
end.
Пробывал вместо
for k:= j to (i-1) do s2:=s2+s[k]; делать
s2:=copy(s,j,i-1); - сразу говорю, так не работает корректно.
Re: ПАСКАЛЬ-ПОИСК
Добавлено: 11 май 2007, 10:14
Хыиуду
Код: Выделить всё
function is_reverser(s:string):boolean;
var i:byte;
begin
for i:=1 to length(s) div 2 do
if s[i]<>s[n-i+1] then
begin
is_reverser:=false;
exit;
end;
is_reverser:=true;
end;
Не устаю повторять, что в разделе "Алгоритмы" есть функция разбиения на слова
Re: ПАСКАЛЬ-ПОИСК
Добавлено: 11 май 2007, 10:51
BBB
Колядин Максим писал(а):Один вопрос по условию: что значит слова-перевертыши?
Предполагаю, что имеются в виду слова-палиндромы. Т.е. слова, которые пишутся одинаково в обоих направлениях (слева направо и справа налево)
Пробывал вместо for k:= j to (i-1) do s2:=s2+s[k]; делать s2:=copy(s,j,i-1); - сразу говорю, так не работает корректно.
А почему эти два кода должны давать одинаковый результат, если они, так сказать, реализут разнве алгоритмы?
В первом случае в строку s2 помещаются символы исходной строки s с позиции j до (i-1) включительно. А во втором - в строку s2 помещаются символы исходной строки s с позиции j длиной i-1. Ибо третьим параметром ф-ии
Copy указывается длина, а не позиция.
Коду:
Код: Выделить всё
s2 := ''; for k:= j to (i-1) do s2:=s2+s[k]
Будет соответствовать код: