Найдите сдесь ошибку и напишите в исправном виде пожалуйста учитель сказал что там ошибка...

0 голосов
20 просмотров

Найдите сдесь ошибку и напишите в исправном виде пожалуйста учитель сказал что там ошибка есть var j,i,min,k,t:integer;
a:array [1..100] of integer;
begin a[1]:=5;a[2]:=4;a[3]:=7;a[4]:=2;a[5]:=9;a[6]:=6;
for j:=1 to 6 do
begin
min:=a[j];
for i:=j to 6 do
if min>a[i] then begin
min:=a[i];t:=i
end;
k:=a[j];a[j]:=min ;a[t]:=k;
write(j,')');
for i:=1 to 6 do
write(a[i],';');
writeln;
end;
end.


Информатика (117 баллов) | 20 просмотров
Дан 1 ответ
0 голосов

Во первых, второй из вложенных циклов for i:=j to 6  заменить  на for i:=j+1 to 6;  во вторых, переменная t не инициализируется перед входом в цикл по i ,  и берется ее предыдущее значение
если на месте j уже стоит наименьшее число, поэтому, в строках for j:=1 to 6 do
begin
min:=a[j]; добавить  после min:=a[j]; t:=j;  после этого будет массив сортироваться по возрастанию.

(9.7k баллов)
0

Да, еще изменить строку  for j:=1 to 6 do  на  for j:=1 to 5,  а то лишний раз прогоняется внешний цикл.