Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с стоками.поиск макс. длинного слова между пробелами.
Форум «Всё о Паскале» > 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.


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