Снова обращаюсь к светлым головам за помощью, ато самому чето вообще не получается. Народ, помогите:
дан текстовый файл input.txt, состоящий из слов, разделенных пробелами. В конце предложения стоит точка. Найти самое длинное слово-перевертыш, если таких слов несколько – рассмотреть все. Найденные слова вывести на экран и в файл output.txt.
Заранее благодарю.
ПАСКАЛЬ-ПОИСК
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Один вопрос по условию: что значит слова-перевертыши?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.
Код: Выделить всё
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;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Предполагаю, что имеются в виду слова-палиндромы. Т.е. слова, которые пишутся одинаково в обоих направлениях (слева направо и справа налево)Колядин Максим писал(а):Один вопрос по условию: что значит слова-перевертыши?
А почему эти два кода должны давать одинаковый результат, если они, так сказать, реализут разнве алгоритмы?Пробывал вместо 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]
Код: Выделить всё
s2:=copy (s, j, (i-1)-j+1);