Форум » Обработка числовых последовательностей » Требуется суровый приговор 2. » Ответить

Требуется суровый приговор 2.

Wally: Условие задачи: на вход программы подаётся последовательность символов, заканчивающихся символом #. Других символов # во входной последовательности нет. Будем называть словом любую последовательность подряд идущих символов, отделенную пробелами. Также слово может начинаться с начала строки. Напишите программу, которая найдёт и выведет слово максимальной длины. Если в строке несколько слов максимальной длины, то вывести на экран первое такое слово. Мой код: var a, p, i: integer=0; line, max, min: string; BEGIN readln(line); for i:=1 to length(line) do begin if (line[i ]<>' ') AND (line[i ]<>'#') then begin a:=a+1; min:=min+line[i ] end else if (p<a) then begin p:=a; a:=0; max:=min; min:='' end else begin min:=''; a:=0 end end; write(max) END. Заранее спасибо.

Ответов - 3

Wally: [i ] - читать как ! Т.е. без пробела.

cabanov.alexey: var a, p, i: integer=0; так писать нельзя, =0 выдаёт ошибку компилятора, пишите как [pre2]BEGIN a:=0; p:=0; i:=0;[/pre2] программу я бы оценил в 3 балла, потому что она линейна по времени, но не эффективна по памяти (вы сохраняете всю строчку). Используйте ввод в символ с циклом while ch<>'#' do Пример на 4 балла [pre2]var input: char; intermediateS, maxS: string; begin readln(input); while (input <> '#') do begin if (input <> ' ') then intermediateS := intermediateS + input else begin if (length(intermediateS) >= length(maxS) ) then maxS := intermediateS; intermediateS := ''; end; readln(input); end; write(maxS); end.[/pre2] Крик души - проверяйте работоспособность кода в IDE, форматируйте его с отступами, используйте нормальные имена переменных.

Wally: cabanov.alexey, в моей IDE код работает.




полная версия страницы