Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Строка, файл

Автор: Dido 14.11.2007 3:36

Помогите пожалуйста!
1)Дана строка символов. Найти в строке самое длинное слово и вывести его на печать. Слова ограничены пробелами, запятыми и точками. Порядок ввода исходных данных: - исходная строка. Порядок вывода результатов: - длина и слово.
2)Преобразовать обработку строки в процедуру (или функцию). Созданную процедуру использовать для построчной обработки текстового файла (Text). Результат обработки записывается в новый файл того же типа.

вот код для того чтоб найти максимальную Длинну, но если я поставлю запятую и точку..то летит

 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.


и можете помочь со 2ой частью задания

Автор: volvo 14.11.2007 3:48

Не учитываешь один момент:
Слова у тебя разделяются не только пробелами, а ведь klem4 предупреждал там, откуда ты скопировала код:

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


Внутренний цикл измени на:
    while not (s[i] in [' ', ',', '.']) do begin
inc(i); inc(len);
if i > length(s) then break;
end;


Автор: Dido 14.11.2007 21:50

Эт-то я учла)
спасибо за цикл)...
эх..а со второй частью я совсем не дружу(

Автор: volvo 14.11.2007 22:49

Цитата
а со второй частью я совсем не дружу(
Это, в смысле, не можешь преобразовать код в функцию? Так очень просто:

{ функция принимает строку и строку же возвращает }
function process(s: string): string;
{ здесь описываешь все нужные переменные }
var ...
begin

{ здесь - практически тот же самый код, что был приведен выше }

process := ... { не забываем возвращать значение }
end;

Попробуй, где не получится - подправим smile.gif