Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Паскаль:Поиск самого длинного слова в строке

18K
16 ноября 2006 года
JohnZP
10 / / 27.10.2006
Напечатать самое длинное слово из заданного текста. В конце текста стоит ".".
Помогите плиз... На завтро нуно...
242
17 ноября 2006 года
Оlga
2.2K / / 04.02.2006
нечетко сформулировал вопрос. текст откуда берется: получаем из файла, или вводим из клавиатуры?

набросала приблизителный алгоритм, Паскаль не знаю, так что надо кое-что добавить и изменить
Код:
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);
3.0K
17 ноября 2006 года
Мerlin
267 / / 25.07.2006
В проге выше есть один небольшой баг.
Если строка не оканчивается на пробел,
тогда последнее слово не проверяется.
И еще один вариант
Код:
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.
242
17 ноября 2006 года
Оlga
2.2K / / 04.02.2006
тогда может лучше:
[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.
[/quote]

спасибо за поправку, сглупила.
3.0K
17 ноября 2006 года
Мerlin
267 / / 25.07.2006
Лучше, но только если строка гарантированно заканчивается точкой.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог