Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2012, 21:09   #1
Слава Кандратьев
 
Регистрация: 21.12.2011
Сообщений: 8
По умолчанию действия со строками

дан текст.найти наибольшее по длине слово
помогите пожалуйста,если можно с объяснением
Слава Кандратьев вне форума Ответить с цитированием
Старый 28.02.2012, 22:59   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Если только объяснение, то я бы сделал так:
1. Сформировал бы текстовый файл из нескольких предложений. Слова разделил бы пробелами, можно не один пробел, а предложения точками.
Предложения могут разделяться возвратом каретки. Слова не разбиваются переносами. В строке не более 255 символов.

Это полезно при тестировании будущей программы.

2. Описал бы несколько переменных, например:
Код:
var smax, stmp : string; {строки для хранения максимального слова}
                            { и промежуточного результата}
            sfh : string; {для чтения строк из файла}
             ch : char; {для хранения символов}
              fh : text; {файловая переменная}
               i : integer; {переменная цикла for}
             sln : integer; {для хранения длинны слова}
3. Написал бы несколько строк кода для организации чтения файла по строкам.
Код:
Begin
   assign(fh, '<тут путь к файлу и его имя в формате 8.3>');
   reset(fh);
4. Придумал бы некоторый алгоритм обработки строки, например, такой,
а)
Код:
smax := ''; {Обнуляем строку с макс. результатом и }
stmp := ''; {строку промежуточного результата}
  sln := 0; {макс. слова ещё нет}
б) Начинаем цикл обработки файла и читаем строку
Код:
repeat
  read(fh, sfh);
в) Определяем длину прочитанной строки и анализируем, последовательно ее символы в цикле:
Код:
 for i := 1 to length(sfh) do begin
    ch := sfh[i];
г) если это пробел или точка, то сравниваем длину smax и stmp.
Код:
If ch = ' ' or ch = '.' then begin {найден конец слова или предложения}
   If sln < length(stmp) then begin
      smax := stmp;
      sln := lendth(smax);
      stmp := '';
   end
end
г) иначе
Код:
else {получен значимый символ}
   stmp := stmp + ch; {добавим символ в конец формируемого слова}
д) если не конец строки, то продолжим обработку с в)
Код:
 end;
е) если не конец файла, то продолжим чтение строк с б)
иначе - завершить цикл обработки файла.
Код:
until eof(fh);
ж) вывел бы результат, слово и его длину:
Код:
writeln('Слово: ', smax, 'Длина: ', sln);
з) завершил бы программу:
Код:
 end.
Остается проверить работу программы (отладить алгоритм, если потребуется) и Ура...

Как то так думаю ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Действия с таблицами CallMeJammer Общие вопросы Delphi 1 05.04.2011 17:35
Арифметически действия Dem6 БД в Delphi 10 09.11.2009 20:28
Циклические действия. Pirimovs Паскаль, Turbo Pascal, PascalABC.NET 21 13.10.2009 14:09
Завершение действия SunKnight Общие вопросы Delphi 3 12.02.2008 18:25
задача на сложные действия со строками Converse Паскаль, Turbo Pascal, PascalABC.NET 5 03.01.2008 07:34