Входной файл cool.in
Выходной файл cool.out
Имеются минимальные суточные температуры за N дней (1<=N<=10000). Определить продолжительность периода в течении которого ежедневно были заморозки.
Входные данные
В первый строке записано число N - кол. дней. Во второй - минимальные суточные температуры, разделенные пробелами.
Выходные данные
Число - длинна наибольшего периода на протяжении которого были заморозки
Пример
Cool.in
10
4 -5 -4 -2 -10 0 1 -2 -1 1
Cool.out
4
Проходим по массиву. В момент перехода с "+" на "-" начинаем считать количество элементов, при переходе с "-" на "+" сравниваем с предыдущим таким значением. Не забыть про края только. Ничего принципиально сложного
написал для нахождения общего кол-ва отрицательных элементов, не работает, что не так?
как сделать чтобы находил не сумму всех, а только тех которые идут один за другим.
вот код:
Возможно нужно написать вместо read(f,n); - readln(f,n); а вместо readln(f,d[i]); - read(f,d[i]);
Массив не обязательно начинать с -10000
я бы написал как-то так
Граничные условия
d[0]:=1;
d[n+1]:=1;
переменные
curr:=0;
max:=0;
Затем цикл
Вы не можете описать массив с таким диапазоном индексов. Лучше вообше без массива обойтись.
...
readln;
read(temp);
max:=0;
While not eof(f) do
begin
while (temp>0) and not eof(f) do
read(temp);
if temp<=0 then
begin
curr:=0;
while (temp<=0) and not eof(f) do
begin
inc(curr);
read(temp)
end;
if curr>max then
max:=curr
end;
...
Не проверяла, может что-то пропустила
Спасибо большое что помогли, хотя еще кое что исправлять пришлось. А массив от -10000 это просто так, оно в принципе роли не играет
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)