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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2012, 09:43   #1
konstantusha
 
Регистрация: 30.09.2012
Сообщений: 8
По умолчанию Ошибка в индексации массива

Здравствуйте! Помогите, пожалуйста с задачей: подсчитать произведение элементов массива между первым максимальным и минимальным. Проблема: программа выдает, что индекс первого элемента равен 0. С чем это связано и как это исправить?

Код на Паскале:

const C=10000;
var a: array [1..C] of real;
i,n,k,imax,imin:integer;
p,amin,amax:real;
begin
writeln ('Vvedite n= ');
readln(n);
p:=1;
for i:=1 to n do
begin
writeln('a[',i,']');
readln(a[i]);
end;

amax:=a[1];
for i:1 to n do
if a[i]>amax then
begin
amax:=a[i];
imax:=i;
end;

amin:=a[i];
for i:1 to n do
if a[i]<amin then
begin
amin:=a[i];
imin:=i;
end;

if(imin-imax=1) or (imax-imin=1) then
writeln('Elementi stoyat ryadom. Proizvedenie ne vichislyaetsya')
else
begin
if imax>imin then
for k:=imin+1 to imax-1 do
p:=p*a[k];
else
for k:=imax+1 to imin-1 do
p:=p*a[k];
writeln('p= ',p:2:2);
end;

writeln('imax = ', imax);
writeln('imin = ', imin);
readln;
end.
konstantusha вне форума Ответить с цитированием
Старый 24.10.2012, 09:59   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Используйте форматирование кода (кнопка #) - реально проще читать будет. А чем проще читать - тем быстрее придет помощь.

Далее:

Код:
for i:1 to n do
- и так два раза по тексту, найдите ошибку Вообще удивительно, что она запустилась. Ну и прочие мелкие мелкие очепатки.

Теперь по проблеме: угадайте, какое значение имеет переменная i в этой точке?

Код:
amin:=a[i];
Правильно, i=n+1. Потому что значения с 1 по n она принимала в цикле.

По идее, компилятор должен был выдать предупреждение типа такого:

Код:
Warning: FOR-Loop variable "i" may be undefined after loop
которое Вы, вероятно, проигнорировали.

Ну и, наконец, прочитайте, что такое трассировка, научитесь пользоваться - и будет Вам щастье
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в сортировке массива gylayko Помощь студентам 0 15.11.2011 20:56
Delphi 2009 и Excel, поменяли способ индексации ячеек Valio Общие вопросы Delphi 2 07.05.2011 17:01
Ошибка массива rymbek Общие вопросы Delphi 5 02.05.2011 22:06
Два одномерных массива A и B. Сформировать два новых массива. Паскаль. Где ошибка в коде? Tomny Помощь студентам 1 27.03.2011 16:47
Вопрос по использованию циклов и индексации листов и ячеек. Zigizman Microsoft Office Excel 6 19.12.2010 19:17