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

Не понятно условие в обработке массива. Что такое Dat[m]?

Var k, m: integer;
Dat: array[1..10] of integer;
Begin
Dat[1]:= 36;
Dat[2]:= 20;
Dat[3]:= 20;
Dat[4]:= 41;
Dat[5]:= 15;
Dat[6]:= 21;
Dat[7]:= 28;
Dat[8]:= 17;
Dat[9]:= 15;
Dat[10]:= 35;
m := 0;
for k :=1 to10 do
if Dat[k] <= Dat[m] then
begin
m := k;
end;
writeln(m);
End.
m - переменная, обозначающая индекс массива. и она не может быть нулём, коль скоро индексация массива начинается с единицы. Это как пытаться засунуть банкноту в 500р в банкомат где-нидь в Таиланде.
"не может быть" означает, что значения m < 1 & m > 10 могут приводить к ошибке, либо результат будет неправильным
Так красивше:
Dat: array[1..10] of integer={36,20,20,41,15,21,28,17,15,35};
begin
m := 1;
for k :=2 to 10 do if Dat[k] <= Dat[m] then m := k;
writeln(m);
Максим Слепухин
Максим Слепухин
84 918
Лучший ответ
Diar * Тут нужны круглые скобки
Dat: array[1..10] of integer = (36,20,20,41,15,21,28,17,15,35);
{ } в Паскале это комментарий.
m := 0;
for k :=1 to10 do
if Dat[k] <= Dat[m] это тоже самое что
if Dat[1] <= Dat[0]
а Dat[1] у тебя равно 36
а Dat[0] чему равно ?

как этот код у тебя может работать ?

if Dat[k] <= Dat[m] m у тебя выше написано что m это 0.
получается так If Dat[k] <= Dat[0]; а это значит
Dat[1 - 10 ] переменная 1 = 36 10 = 35
а Dat[m] Dat[0] че значит ?

в общем может я не понятно ответил че от задачи требуется напиши мне или Алексу он конечно лучше разбирается.

if Dat[k] <= Dat[m] then
begin
m := k;

Это получается что
если значение переменной Dat[k] меньше или равно значению переменной
Dat[m] а m у тебя это 0 значит Dat[0] а этой переменной у тебя нету.
то переменной m присваивается значение переменной k это получится номер массива то есть номер Dat[1-10] какой то из них номер и все зачем не знаю,
А значение содержащееся по номеру массива Dat[1-10] выводится не будет.
выведется только число от 1 го до 10 и то не может вывестись потому что Dat[m] то есть Dat[0] нету вообще такой переменной, или будет работать как то коряво.
О.
Олежа .
3 061
Азамат Маликов вышла ошибка. правильно так:
m := 1;
for k :=1 to10 do
if Dat[k] <= Dat[m] then
begin
m := k;
end;
writeln(m);
. но как это решается?

Похожие вопросы