Другие языки программирования и технологии

Помогите с исправить ошибку, массивы, c++builder

У меня задание "найти произведение элементов массива между максимальным и минимальным по модулю".
Вот я начинаю искать максимальный, но ищет не верно, он напросто выводит 1 элемент массива.

n=StrToInt(Edit1->Text);
int i=0,a[10];
int pr=1;

int max = 0;
int min = 0;
for(int i=0;iCells[i][0]);
}
for(i=0; i<n; i++){
if (abs(a[i])Caption = "Число масимальное по модулю = "+IntToStr(max) ;
if (abs(a[i]) - для всех, что не ноль оно и скажет, что максимально

Максимум можно так найти
int max = abs(a[0]);
int imax=0;
int min = abs(a[0]);
int imin=0;
for(int i=1; i max ) { max = a[i]; imax = i; }
if( abs(a[i]) < min ) { min = a[i]; imin = i; }
}

тогда произведение можно найти, только учесть, что imin и imax могут отличаться как в большую, так меньшую сторону и даже быть равны

Здесь режет, вот результат http://ideone.com/2dUthi
*** Аскеров
*** Аскеров
61 946
Лучший ответ
парсер ответов сожрал половину кода, киньте его на pastebin
Yarik Bigun
Yarik Bigun
82 050
#include
#include
using namespace std;

void main()
{
srand(time(0));

const int n = 10;
int mas[n];
int min_index = 0, max_index = 0;
int result = 1;

for (unsigned int i = 0; i < n; i++)
{
mas[i] = rand() % 20 + 1;
cout << "mas[" << i << "] = " << mas[i] << endl;
}

//найдем max и min
for (unsigned int i = 1; i < n; i++) //да i = 1, так надо
{
if (abs(mas[min_index]) > abs(mas[i])) min_index = i;
if (abs(mas[max_index]) < abs(mas[i])) max_index = i;
}

if (min_index > max_index)
{
int temp = max_index;
max_index = min_index;
min_index = temp;
}

//перемножим
for (unsigned int i = min_index; i <= max_index; i++)
result *= mas[i];

cout << "min index = " << min_index << endl;
cout << "max index = " << max_index << endl;
cout << "result = " << result << endl;
}