Алгоритм сортировки строки массива по возрастанию методом прямого выбора может быть представлен так: 1. Просматривая строку массива от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального. 2. Просматривая строку массива от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального. 3. И так далее до предпоследнего элемента.
Решение:
//Pascal const n = 7;
var a: array[1..n, 1..n] of integer; i, j, min, ind: integer;
//Заполнение массива сл. числами и вывод на экран begin for i := 1 to n do begin for j := 1 to n do begin a[i, j] := random(100); write(a[i, j]:4); end; writeln; end;
//Сортировка строки матрицы прямым выбором
for i := 1 to n - 1 do begin min := a[4, i]; ind := i; for j := i + 1 to n do if a[4, j] < min then begin min := a[4, j]; ind := j; end; a[4, ind] := a[4, i]; a[4, i] := min; end; writeln;
//вывод отсортированной строки for j := 1 to n do begin write(a[4, j]:4); end; end.
В общем случае, трассировка - один из отладки программ врукопашную: состояние программы контролируется на определённом отрезке времени её выполнения путём анализа значений переменных. трассировка в том или ином виде при отладке программ сложнее школьного дз практически неизбежна. в простейшем случае, трассировка - вывод значений переменных на экран (например, в окно консоли) , либо расчёт их на бумажке для каждого шага. в более продвинутом варианте используются точки останова, окно наблюдения, выполнение по шагам и, если есть, контекстный интерпретатор выражений. есть также специальная "трассирующая консоль" - интерфейс вывода информации из программы в отладчик, если таковой присутствует. почти любой современный отладчик показывает состояние програмm при её останове, что делает трассировку процессом легко доступным
program Numfind;
uses
System.SysUtils;
var
a: array [1..10] of Integer; // 1..10 размерность массива можно изменять, программа будет работать правильно
i, s: Integer;
begin
Randomize;
for i := Low(a) to High(a) do
a[i] := - 25 + Random (151);
WriteLn ('Массив чисел:');
for i := Low(a) to High(a) do
Write (a [i], ' ');
s := 0;
WriteLn;
WriteLn;
WriteLn ('Выбрано: ');
for i := Low(a) to High(a) do begin // цикл выбора чисел больше 20
if (a [i] > 20) then begin
s := s + a [i];
Write (A [i], ' ');
end;
end;
WriteLn;
WriteLn ('Сумма чисел больше 20 = ', s);
s := 0;
WriteLn;
WriteLn ('Выбрано: ');
for i := Low(a) to High(a) do begin // цикл выбора чисел меньше 100
if (a [i] > 0) and (a [i] < 100) then begin
s := s + a [i];
Write (A [i], ' ');
end;
end;
WriteLn;
WriteLn ('Сумма чисел меньше 100 = ', s);
s := 0;
WriteLn;
WriteLn ('Выбрано: ');
for i := Low(a) to High(a) do begin // цикл выбора чисел кратных 3
if (a [i] > 0) and (a [i] mod 3 = 0) then begin
s := s + a [i];
Write (A [i], ' ');
end;
end;
WriteLn;
WriteLn ('Сумма чисел кратных 3 = ', s);
ReadLn
end.