Gennady
Гений
(60494)
14 лет назад
Доброго времени суток.
Ищите только индексы. По индексам всегда отобразите сам минимальный элемент
MinI := 1;
MinJ := 1;
for i:=1 to n do
for j:=1 to k do
if a[i,j] < a[MinI,MinJ] then begin
MinI := i;
MinJ := j;
end;
{индексы нашли}
WriteLn(A[MinI, MinJ]); {а так показываем минимальный элемент}
Удачи!
Vlad02Профи (557)
14 лет назад
В
if a[i,j] < a[MinI,MinJ] then begin
MinI := i;
MinJ := j;
end;
Пропущена строка собственно поиска минимального элемента
Соответственно нормальная программа выглядит примерно так:
program variant3;
const
Max_X=10;
Max_Y=5
Type
T_Arr= array[1.. Max_X,1.. Max_Y] of integer;
var
a: T_Arr;
i,j,n,k,min,minI,minJ:integer;
begin
Write(‘Строк=’);
readln(n);
Write(‘Столбцов=’);
readln(k);
for i:=1 to n do
for j:=1 to k do begin
writeln('a(',i,';',j,')=');
readln(a[i,j]);
end;
min:=a[1,1];
minI:=1;
minJ:=1 ;
for i:=1 to n do
for j:=1 to k do begin
if a[i,j]
Vlad02Профи (557)
14 лет назад
А сам минимальный элемент вам на блюдечке? или третий цикл перебора? Вот мой вариант и ищет ОДНОВРЕМЕННО минимальный элемент массива и его индексы, а ваш на выходе выдаст элемент за номером 1,1 , можете компильнуть и проверить
Vlad02Профи (557)
14 лет назад
Насчет подсчетов вызовов в вашем вариант осуществляется за цикл ДВА ОБЯЗАТЕЛЬНЫХ вызова элемента массива в моём ОДИН ОБЯЗАТЕЛЬНЫЙ и один в случае выполнения условия сравнения, то есть в наихудшем варианте(монотонно убывающий массив) мой вариант по количеству вызовов равен вашему, в остальных случаях имеем количество необязательных вызовов равное количеству элементов меньших чем все предыдущие, а в среднем это как минимум в 1Ю5 раза меньше, на массивах под милион элементов с динамическим вызовом это скажется существенно, ну а мой последний вариант вообще массивы не использует:)
Vlad02
Профи
(557)
14 лет назад
Собственно Геннадий напомнил студенчество, и соответственно простейшее решение задачи :) с приведёнными требованиями
program variant3;
Var
i,j, IndexI,IndexJ,MinI,MinJ:integer;
x,y:real;{необходимый тип}
begin
y:=1,8e38;{наибольшее возможное число для данного типа}
write('Число столбцов=');
readln(IndexJ);
write('Число строк=');
readln(IndexI);
write('Элемент [',i,';',j']=');
readln(x);
for i:=1 to IndexI do
for i:=1 to IndexI do
if x
Vlad02Профи (557)
14 лет назад
Сожрала и исковеркала программу-program variant3;
Var
i,j, IndexI,IndexJ,MinI,MinJ:integer;
x,y:real;{необходимый тип}
begin
y:=1,8e38;{наибольшее возможное число для данного типа}
write('Число столбцов=');
readln(IndexJ);
write('Число строк=');
readln(IndexI);
for i:=1 to IndexI do
for j:=1 to IndexI do begin
write('Элемент [',i,';',j']=');
readln(x);
if x
Vlad02Профи (557)
14 лет назад
так как убивает после знака написал словом меньше
program variant3;
Var
i,j, IndexI,IndexJ,MinI,MinJ:integer;
x,y:real;{необходимый тип}
begin
y:=1,8e38;{наибольшее возможное число для данного типа}
write('Число столбцов=');
readln(IndexJ);
write('Число строк=');
readln(IndexI);
for i:=1 to IndexI do
for j:=1 to IndexI do begin
write('Элемент [',i,';',j']=');
readln(x);
if x меньше y then begin y:=x;MinI:=i;MinJ:=j end;
end;{j}
write('Минимальный элемент X[',MinI,';',MinJ']=',y);
end.
var
a:array[1..10,1..5] of integer;
i,j,n,k,min,nmin:integer;
begin
readln(n,k);
for i:=1 to n do
for j:=1 to k do begin
writeln('a(',i,';',j,')=');
readln(a[i,j]);
end;
min:=a[1,1];
nmin:= ???
for i:=1 to n do
for j:=1 to k do begin
if a[i,j]<min>nmin:=????
end;
writeln ('MIN=',min,'nmin=',nmin);
end.