len, maxlen, i : Integer;
str, temp, maxstr : String;
{ ... задать текст в str }
maxlen = 0;
len = 0;
max = "";
temp = "";
for i := 0 to Length(str) begin
if str(i) = '.' then ... {end for}
if str(i) = ' ' tnen begin
if maxlen < len then begin
maxstr = temp;
maxlen = len;
end;
len = 0;
temp = "";
else begin
len := len + 1;
temp = temp + str(i);
end;
end;
writeln(maxstr);
Паскаль:Поиск самого длинного слова в строке
Помогите плиз... На завтро нуно...
набросала приблизителный алгоритм, Паскаль не знаю, так что надо кое-что добавить и изменить
Код:
Если строка не оканчивается на пробел,
тогда последнее слово не проверяется.
И еще один вариант
Код:
program pr;
var
maxlen, maxpos, lastsp, curlen, i, n: Integer;
str: String;
begin
WriteLn('Vveidite stroku : ');
ReadLn(str);
n := Length(str);
maxlen := 0;
lastSp := 0;
curlen := 0;
for i:=1 to n do begin
if str = '.' then Break;
if str = ' ' then begin
if curlen > maxlen then begin
maxlen := curlen;
maxpos := lastsp + 1;
end;
curlen := 0;
lastsp := i; end
else
Inc(curlen);
end;
if curlen > maxlen then begin
maxlen := curlen;
maxpos := lastsp + 1;
end;
if maxlen > 0 then
WriteLn('Stroka s max.dlinoj = ', Copy(str, maxpos, maxlen))
else
WriteLn('Indjuk, ti vvel pustuju stroku');
ReadLn;
end.
var
maxlen, maxpos, lastsp, curlen, i, n: Integer;
str: String;
begin
WriteLn('Vveidite stroku : ');
ReadLn(str);
n := Length(str);
maxlen := 0;
lastSp := 0;
curlen := 0;
for i:=1 to n do begin
if str = '.' then Break;
if str = ' ' then begin
if curlen > maxlen then begin
maxlen := curlen;
maxpos := lastsp + 1;
end;
curlen := 0;
lastsp := i; end
else
Inc(curlen);
end;
if curlen > maxlen then begin
maxlen := curlen;
maxpos := lastsp + 1;
end;
if maxlen > 0 then
WriteLn('Stroka s max.dlinoj = ', Copy(str, maxpos, maxlen))
else
WriteLn('Indjuk, ti vvel pustuju stroku');
ReadLn;
end.
[quote=Мerlin]
Код:
program pr;
var
maxlen, maxpos, lastsp, curlen, i, n: Integer;
str: String;
begin
WriteLn('Vveidite stroku : ');
ReadLn(str);
n := Length(str);
maxlen := 0;
lastSp := 0;
curlen := 0;
for i:=1 to n do [COLOR=purple]begin[/COLOR]
if str = ' ' or str = '.' then [COLOR=blue]begin[/COLOR]
if curlen > maxlen then begin
maxlen := curlen;
maxpos := lastsp + 1;
end;
curlen := 0;
lastsp := i;
else
Inc(curlen);
[COLOR=blue]end;[/COLOR]
if str = '.' then Break;
[COLOR=purple]end;[/COLOR]
if maxlen > 0 then
WriteLn('Stroka s max.dlinoj = ', Copy(str, maxpos, maxlen))
else
WriteLn('Indjuk, ti vvel pustuju stroku');
ReadLn;
end.
var
maxlen, maxpos, lastsp, curlen, i, n: Integer;
str: String;
begin
WriteLn('Vveidite stroku : ');
ReadLn(str);
n := Length(str);
maxlen := 0;
lastSp := 0;
curlen := 0;
for i:=1 to n do [COLOR=purple]begin[/COLOR]
if str = ' ' or str = '.' then [COLOR=blue]begin[/COLOR]
if curlen > maxlen then begin
maxlen := curlen;
maxpos := lastsp + 1;
end;
curlen := 0;
lastsp := i;
else
Inc(curlen);
[COLOR=blue]end;[/COLOR]
if str = '.' then Break;
[COLOR=purple]end;[/COLOR]
if maxlen > 0 then
WriteLn('Stroka s max.dlinoj = ', Copy(str, maxpos, maxlen))
else
WriteLn('Indjuk, ti vvel pustuju stroku');
ReadLn;
end.
спасибо за поправку, сглупила.
Лучше, но только если строка гарантированно заканчивается точкой.