Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с стоками.поиск макс. длинного слова между пробелами.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Andrewshkovskii
Доброго времени суток всем!
Вот задание по сабжу..
Вот текст задания :
Вводится последовательность символов различной длины. В начале и конце стоит символ «пробел». Напечатать самую длинную последовательность букв, расположенную между двумя пробелами.

Ситуация такая : Девушка(одногрупница) задолжала преподу по лабам,и попросила меня написать сию программу,но так как я напрочь забыл как на паскале работать со строками,да и вобще паскаль подзабыл..обращаюсь к вам=)

Вот код моей программы по томуже номеру :

Задание :
Вводиться последовательность символов разной длинны. Слова разделены пробелами,концом строки явдяеьется символ “.” .Распечатать самое длинное слово.

Код :
 
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;




Вставляю только процедуру поиска макс. длинного слова,т.к её только нужно поменять.Большая просьба,пожалуйста,помогите девушке:)
Повторюсь,что надо переделать данную процедуру так,что бы она работала по след. заданию :
Вводится последовательность символов различной длины. В начале и конце стоит символ «пробел». Напечатать самую длинную последовательность букв, расположенную между двумя пробелами.
klem4
Сто раз решалось, вот конкретно под твое условие:

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.


Учти, в начале и конце обязательно должен стоять пробел, слова разделяются только одним пробелом. Если это не учесть, программа будет работать некорректно.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.