Доброго времени суток всем!
Вот задание по сабжу..
Вот текст задания :
Вводится последовательность символов различной длины. В начале и конце стоит символ «пробел». Напечатать самую длинную последовательность букв, расположенную между двумя пробелами.
Ситуация такая : Девушка(одногрупница) задолжала преподу по лабам,и попросила меня написать сию программу,но так как я напрочь забыл как на паскале работать со строками,да и вобще паскаль подзабыл..обращаюсь к вам=)
Вот код моей программы по томуже номеру :
Задание :
Вводиться последовательность символов разной длинны. Слова разделены пробелами,концом строки явдяеьется символ “.” .Распечатать самое длинное слово.
Код :
program z5;
uses crt;
var
j:byte;
a:char;
i,k,x:integer;
s,s1,smax,name,path:string;
f: text;
procedure work (var s:string);
begin
k:=length(s) + 1;
for i:=1 to length(s) do
if s[i]='.' then
k:=i;
delete(s,k,length(s)-k+1);
s:=s+' ';
i:=0;
x:=0;
repeat
s1:='';
i:=i+1;
repeat
if s[i]<>' ' then
s1:=s1+s[i];
i:=i+1;
until s[i]=' ';
if length(s1)>x then
begin
smax:=s1;
x:=length(s1);
end;
until i=length(s);
writeln('Samoe dlinnoe slovo v dannoi stroke :');
writeln(smax);
end;
Сто раз решалось, вот конкретно под твое условие:
var
s: string;
i, start, len, max_len: byte;
begin
readln(s);
max_len := 0;
start := 0;
i := 2;
while (i < length(s)) do begin
len := 0;
while not (s[i] = ' ') do begin
inc(i); inc(len);
end;
if len > max_len then begin
max_len := len;
start := i - len;
end;
inc(i);
end;
writeln(copy(s, start, max_len));
end.