Показать сообщение отдельно
Старый 03.03.2011, 21:16   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от JohnnieW Посмотреть сообщение
Доброго времени суток!
Недавно начал изучать паскаль, встретился с такой вот задачкой:
Дана целочисленная таблица А[1:10]. Подсчитать количество i, таких, чтобы A[i] было больше всех предыдущих элементов таблицы.
Извиняюсь, что не умею делать листинги, поэтому пишу своё решение текстом. (решение без куска, где заполняется массив):

s:=0;
for i:=2 to 10 do
begin
r:=1;
while (r<i) and (a[i]>a[i-r]) do r:=r+1;
if r=i then s:=s+1 else
end;
writeln(s);
end.

Собственно, программа запускается, но при любых значениях элементов массива переменная s выводится со значением 0. Пожалуйста, подскажите, в чём ошибка
Да нет, всё правильно - я Вашу программу погонял, всё работает как надо.
Единственное - строку
if r=i then s:=s+1 else
я заменил строкой
if r=i then s:=s+1;
Потому что этот else ту ни к селу, ни к городу. Но и с ним, т.е. в исходном варианте, тоже работает.
Я для пробы вставил
for i:=1 to 10 do a[i]:=i;
и получил, как и ожидал, 9.
Так что ошибка где-то как раз в невыложенной части, т.е. во вводе массива.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070