Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal] одномерный массив


Автор: GAMER14 1.12.2010, 19:28
В произвольно заданном одномерном массиве определить максимальную последовательность из положительных элементов и вывести ее на экран дисплея.

дана неограниченный одномерный массив, к примеру: -7 5 7 1 4 -4 9 0 -1 -3 4 6 1 4 3 -6 5 2 
в результате из этих чисел на экран должны быть выведено следующее 4 6 1 4 3 

бли эта прога очень нужна 

Автор: Predator_2004 2.12.2010, 08:18
Что-то такое:
Код

program Test;

const N=18;

var
  A:array [1..N] of integer;  { собственно массив }
  MaxCount:integer;  { максимальное количество положительных цифр в последовательности }
  MaxIndex:integer;  { индекс начала максимальной последовательности }
  CurrentSequenceCount:integer; { количество положительных цифр в последовательности }
  CurrentSequenceIndex:integer;  { индекс начала текущей последовательности }
  i:integer;  { переменная цикла }

begin
  for i:=1 to N do readln(A[i]);  { считываем массив с клавиатуры }
  LastSequenceCount:=0;  { инициализируем переменные }
  LastSequenceIndex:=0;
  MaxCount:=0;
  MaxIndex:=0;
  CurrentSequenceCount:=0;
  CurrentSequenceIndex:=0;
  for i:=2 to N do
  begin
    if A[i]>=0 then
      begin
        if A[i-1]<0 then { начало новой последовательности }
          begin
            if MaxCount<CurrentSequenceCount then { проверка на максимальную последовательность }
              begin
                MaxCount:=CurrentSequenceCount;
                MaxIndex:=CurrentSequenceIndex;
              end;
            CurrentSequenceCount:=1;  { начинаем новую последовательность }
            CurrentSequenceIndex:=i;
          end
        else  { идем по последовательности }
          begin
            CurrentSequenceCount:=CurrentSequenceCount+1; { увеличиваем счетчик количества цифр }
          end;
      end
  end;
  writeln('Result:'); { выдаем результат }
  for i:=MaxIndex to MaxIndex+MaxCount-1 do writeln(A[i]);
  readln;
end.


Добавлено через 2 минуты и 42 секунды
"Забыл" учесть граничные условия, но думаю доделаете)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)