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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2013, 03:05   #1
AnutaPr
 
Регистрация: 16.08.2013
Сообщений: 6
По умолчанию Отладка программы на Pascale

Нужно отладить программу на паскале.

Текст задачи:
Уставшие от необычно теплой зимы, москвичи решили узнать, действительно ли это самая длинная оттепель за всю историю наблюдений за погодой. Они обратились к синоптикам, а те, в свою очередь, занялись исследованиями статистики за прошлые годы. Их интересует, сколько дней длилась самая длинная оттепель.
Оттепелью они называют период, в который среднесуточная температура ежедневно превышала 0 градусов Цельсия. Напишите программу, помогающую синоптикам в работе.
Формат входных данных
Cначала вводится число N – общее количество рассматриваемых дней (1 ≤ N ≤ 100). В следующей строке задается N целых чисел, разделенных пробелами. Каждое число – среднесуточная температура в соответствующий день. Температуры – целые числа, принадлежащие диапазону от –50 до 50.
Формат выходных данных
Требуется вывести одно число – длину самой продолжительной оттепели, то есть наибольшее количество последовательных дней, на протяжении которых среднесуточная температура превышала 0 градусов. Если температура в каждый из дней была неположительной, выведите 0.

Мой вариант решения:
Код:
Program Ottepel512;
var
   N, i, k1, k2: integer;
   dni:array [1..100]  of integer;
function max(a, b: integer): integer;
begin
  if a > b then
    max := a
  else
    max := b;
end;

begin
     k1:=0;
     k2:=0;
     readln(N);
     for i:=1 to N do begin
         readln(dni[i]);
     if dni[i] > 0 then begin
                         k1:=k1 + 1;
                         k2:=max(k1,k2)
                         end
                    else k1:=0;
  end;
  writeln(k2);
end.
Заранее спасибо)
AnutaPr вне форума Ответить с цитированием
Старый 13.09.2013, 08:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а что Вы хотите добится отладкой? я не вижу ошибок в данной программе!!

единственное, в данном случае (при заданных условиях задачи и выбранном Вами алгоритме решения) можно обойтись без массива - ведь Вы в цикле считываете очередное число и тут же, в этом же цикле его и обрабатываете. В дальнейшем данные массива нигде не требуются
поэтому можно:
Код:
var den : integer;
....
     readln(N);
     for i:=1 to N do begin
         readln(den);
         if den > 0 then begin
               k1:=k1 + 1;
               k2:=max(k1,k2)
         end
         else k1:=0;
     end;
...

ДОБАВЛЕНО
Цитата:
В следующей строке задается N целых чисел, разделенных пробелами.
readln() считывает одно число из строки и переходит на следующую строчку
попробуйте вместо readln() воспользоваться процедурой read()

Последний раз редактировалось Serge_Bliznykov; 13.09.2013 в 08:25.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно исправить текст программы на Pascale Ganty Помощь студентам 2 07.06.2011 13:22
Отладка программы stas9In Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 07.12.2010 09:50
отладка программы tanek Помощь студентам 3 01.04.2010 21:52
Отладка программы в с++ immor Общие вопросы C/C++ 2 31.05.2009 21:56
отладка программы honest Помощь студентам 1 18.03.2009 06:58