Записать вместо x[n] порядковый номер его минимального элемента массива

Бес

Помогите пожалуйста... Вот у меня задача.....ЗАПИСАТЬ ВМЕСТО X[n] ПОРЯДКОВЫЙ НОМЕР ЕГО МИНИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА X=(x1,x2...,xn)... Вот чтобы программа выявляла минимальный элемент я сделала...вот она
procedure TForm1.Button1Click(Sender: TObject);
var a: array [1..20] of integer;
n,i,j: integer;
begin
n:=strToInt(Edit1.Text);
For i:=1 to n do
a[i]:=strToInt(M1.Cells[i-1,0]);
j:=1;
For i:=1 to n do
if a[i]<a[j] then j:=i;
label5.Caption:='min a='+IntTostr(a[j])+'  ero №='+IntTostr(j);
end;
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.Text<>''then
M1.Colcount:=strToint(Edit1.Text);
M2.Colcount:=strToint(Edit1.Text);
end;
А как мне сделать чтобы во втором массиве место минимального элемента был его порядковый номер...?????
5 ответов

Бес

procedure TForm1.Button1Click(Sender: TObject);
var a: array [1..20] of integer;
n,i,j: integer;
begin
n:=strToInt(Edit1.Text);
For i:=1 to n do
a[i]:=strToInt(M1.Cells[i-1,0]);
j:=1;
For i:=1 to n do
if a[i]<a[j] then j:=i;
label5.Caption:='min a='+IntTostr(a[j])+' ero №='+IntTostr(j);
end;
Можно так-(это если в лоб...)
procedure TForm1.Button1Click(Sender: TObject);
var a: array [1..20] of integer;
n,i,j: integer;
begin
n:=strToInt(Edit1.Text);
For i:=1 to n do
a[i]:=strToInt(M1.Cells[i-1,0]);
j:=1;
For i:=1 to n do
if a[i]<a[j] then
begin
 j:=i;
label5.Caption:='min a='+IntTostr(a[j])+' ero №='+IntTostr(j);
M2.Cells[i-1,0]:=j;
end;
end;
Но если вдруг в массиве окажется несколько одинаковых мин элементов тогда надо подумать...


Бес

M2.Cells[i-1,0]:=j; Вот в этом месте машина видит ошибку...


Бес

Прости,пожалуйста, я имел ввиду логику(!), а не конкретную работу с массивом! Сообщи какую ошибку??? Сейчас глянем! Если, бы ты во вложении выложила свой прект, было-бы проще его отладить, а то мне честно лень создавать проект...Наверное вот почему... Массив не обьявили!!!
procedure TForm1.Button1Click(Sender: TObject);
var 
a: array [1..20] of integer;
xxx: array [1..20] of integer;
 
n,i,j: integer;
begin
n:=strToInt(Edit1.Text);
For i:=1 to n do
a[i]:=strToInt(M1.Cells[i-1,0]);
xxx:=strToInt(M2.Cells[i-1,0]);
 
 
j:=1;
For i:=1 to n do
if a[i]<a[j] then
begin
 j:=i;
label5.Caption:='min a='+IntTostr(a[j])+' ero №='+IntTostr(j);
xxx[j]:=j;
end;
end;
Ответь, что получилось!!!


Бес

Ему не нравиться приваевание второго массива xxx:=strToInt(M2.Cells[i-1,0]); Типо xxx: array [1..20] of integer; сдесь тоже не верно...Ему не нравиться приваевание второго массива xxx:=strToInt(M2.Cells[i-1,0]); Типо xxx: array [1..20] of integer; сдесь тоже не верно...http://www.cyberforum.ru/images/attach/zip.gif


Бес

Посмотри предидущий мой ответ с исправлением а что это за ссылка?Ему не нравиться приваевание второго массива xxx:=strToInt(M2.Cells[i-1,0]); Типо xxx: array [1..20] of integer; сдесь тоже не верно...Что конкретно не нравиттся? Выложи прект!ААААААА, Понятно Сделай xxxх[i]:=strToInt(M2.Cells[i-1,0]);