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

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

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2018, 16:53   #1
soatari
Новичок
Джуниор
 
Регистрация: 20.02.2018
Сообщений: 1
По умолчанию Не могу понять причину ошибки

На спутнике «Фотон» установлен прибор, предназначенный для измерения энергии космических лучей. Каждую минуту прибор передаёт по каналу связи неотрицательное целое число — количество энергии, полученной за последнюю минуту, измеренное в условных единицах. Временем, в течение которого происходит передача, можно пренебречь. Необходимо найти в заданной серии показаний прибора минимальное произведение двух показаний, между моментами передачи которых прошло не менее 6 минут. Количество энергии, получаемое прибором за минуту, не превышает 1000 условных единиц. Общее количество показаний прибора в серии не превышает 10 000. Напишите на любом языке программирования программу для решения поставленной задачи

Код:
const s = 6;
var
a:array[1..s-1] of integer;
mina, minp: longint;
i,n:integer;
 

begin
readln(n);
  for i:=1 to s do readln(a[i mod s]);  //на это строке "ошибка"
  minp:=1000*1000+1;
mina:=1001;
  for i:=s+1 to n do begin
    if (a[i mod s]<mina) then mina:=a[i mod s];
    readln(a[i mod s]);
    if (a[i mod s ] * mina < minp) then minp:=(a[i mod s ]*mina);
    end;
    if (minp < 1000001) then writeln(minp) else writeln(-1);
    end.
Выводит ошибку: Индекс находился вне границ массива.
soatari вне форума Ответить с цитированием
Старый 20.02.2018, 17:05   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
for i:=1 to s do readln(a[i mod s]);
чему равно i mod s для i=s? вот и первый выход за пределы массива
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.02.2018, 17:06   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от soatari Посмотреть сообщение
Код:
for i:=1 to s do readln(a[i mod s]);  //на это строке "ошибка"
точно. подумайте, когда i станет равных s, чему будет равно выражение i mod s ?
s mod s = ноль.
у Вас есть a[0] ?

кроме того, подумайте, зачем в условии сказано
Цитата:
Сообщение от soatari Посмотреть сообщение
Общее количество показаний прибора в серии не превышает 10 000.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
НЕ МОГУ ПОНЯТЬ ОШИБКИ? jeziq PHP 9 10.03.2012 21:01
Не могу найти причину ошибки pastuhdima Помощь студентам 0 06.10.2011 00:24
Не могу понять ошибки Python 2.7.1 alexssey163 Python 1 26.03.2011 21:44
Не могу понять суть ошибки KIrich iz Che Общие вопросы C/C++ 8 18.04.2010 13:44