Цитата:
Сообщение от Dimon1231
мне нужно чтобы выводилось
если (f f f ) то s1:=f ; а s2:=f f
если (abcabc a abc abc) то s1:=abcabc ; s2:=defdef a def
но выводит без а
|
Не понял почему s1 = f в первом случае, но дело Ваше. Закоментируйте строки для проверки на равенство с последним словом:
Код:
// Делим строку на две части
n := length(s);
while (n >= 1) and (s[n] = ' ') do dec(n); // Пропуск пробелов в конце строки
n1 := n;
while (n >= 1) and (s[n] <> ' ') do dec(n); // Поиск пробела перед последним словом
s3 := copy(s, 1, n); // строка без последнего слова
p_s := copy(s, n+1, n1-n); // последнее слово
writeln(p_s+'---');
// Дальше работаем только с первой частью без последнего слова
n := 1; k := 1; max := 0; s1 := ''; s2 := '';
while n <= length(s3) do begin
if s3[n] = ' ' then begin
// Нашли очередной пробел
if n-k > 0 then begin // !!! Здесь не исправили, поэтому без 'a' во втором варианте
writeln(n);
writeln(k);
s4 := copy(s3, k, n-k); // Очередное слово в строке
writeln(s4+'...');
// дальше решаем, что делать с этим словом
{if s4 <> p_s then begin } // Отличное от последнего
if length(s4) > max then begin
s1 := s4;
max := length(s4)
end;
{end;}
// Заменяем
p := pos('abc', s4);
while p <> 0 do begin
delete(s4, p, 3);
insert('def', s4, p);
p := pos('abc', s4);
end;
if length(s2) > 0 then s2 := s2 + ' ';
s2 := s2+s4;
end;
k := n+1;
end;
inc(n);
end;