Водномерном массиве размерностью n=10 отсортировать по возрастанию четные элементы массива.вывести исходный и измененный массив.можно использовать любой метод сортировки.
Program massiv; uses crt; type matr=array[1..10] of integer; var a: matr; procedure vvod(var a:matr); var i: integer; begin for i:=1 to 10 do begin write ('Введите элемент массива a[',i,']'); readln(a[i]); end; end; procedure ivyvod(var a: matr); var i: integer; begin write ('Исходный массив '); for i:=1 to 10 do write (a[i],' '); writeln; end; procedure sort(var a:matr); var i,j,min: byte; vsp: integer; begin for i:=1 to 9 do begin min:=i; for j:=i+1 to 10 do if a[j]<a[min] then min:=j; vsp:=a[i]; a[i]:=a[min]; a[min]:=vsp; end; end; procedure vyvod(a:matr); var i:integer; begin write('Отсортированная последовательность массива '); for i:=1 to 10 do begin if a[i] mod 2 = 0 then write(' ',a[i]); end; end; begin vvod(a); ivyvod(a); sort(a); vyvod(a); end.
В начале мы создаем массив случайных элем. Потом работаем с ним. Нам нужны 2 переменные: 1 - переменная, для сохранения результата (номера). 2 - переменная флажок. Мы обходим весь массив ПО СТОЛБЦАМ. В начале обхода конкретного столбца переменной флажка присвоим 1. Сравниваем текущий элемент столбца с последующим, если они не равны то ставим флажок 0
Код: //Размерность массива const n = 3; //Сам массив var ar : array[1..n,1..n] of integer; //Переменные для работы с массивом var i,j : integer; //Переменные для поиска столбца //f - переменная флажок, которая по окончанию обхода столбца будет //показывать одинаковы ли элементы в нем //numb - переменная, в которой сохраним номер столбца с //одинаковыми значениями элементов. var f,numb : integer; begin //Создание и вывод на экран массива //Элементы генерируются случайным образом // for i:=1 to n do begin for j:=1 to n do begin ar[i,j] := random(2); write(ar[i,j]:3); end; writeln; end; //
//Вот сам алгоритм поиска // //Записываем в numb значение -1 //Если в процессе работы значение не изменится (-1) //То означает, что в массиве нет одинаковых столбцов numb := -1;
//Идем по массиву // for j:=1 to n do //Момент начала конкретного j столбца begin //записываем в f значение 1 //Предполагаем, что столбец одинаков //Если в конце обхода конкретного столбца значение f=1 //Значит, что данный столбец одинаков f := 1;
//Идем по столбцу // n-1 //(т.к сравниваем текущий со следующим) for i:=1 to n-1 do begin //Сравниваем текущий элемент столбца, со следующим if (ar[i,j] <> ar[i+1,j]) then //Если они не равны, то изменяем значение флажка f на 0 f := 0; end; //Конец обхода конкретного столбца
//Если столбец одинаков if (f = 1) then //то записываем его номер в numb numb := j; end; //
//Вывод результата if (numb <> -1) then writeln('Столбец №: ',numb) else writeln('Нет ни одного одинакового столбца'); end.
uses crt;
type
matr=array[1..10] of integer;
var
a: matr;
procedure vvod(var a:matr);
var
i: integer;
begin
for i:=1 to 10 do
begin
write ('Введите элемент массива a[',i,']');
readln(a[i]);
end;
end;
procedure ivyvod(var a: matr);
var i: integer;
begin
write ('Исходный массив ');
for i:=1 to 10 do
write (a[i],' ');
writeln;
end;
procedure sort(var a:matr);
var
i,j,min: byte; vsp: integer;
begin
for i:=1 to 9 do
begin
min:=i;
for j:=i+1 to 10 do
if a[j]<a[min] then min:=j;
vsp:=a[i]; a[i]:=a[min]; a[min]:=vsp;
end;
end;
procedure vyvod(a:matr);
var
i:integer;
begin
write('Отсортированная последовательность массива ');
for i:=1 to 10 do
begin
if a[i] mod 2 = 0 then write(' ',a[i]);
end;
end;
begin
vvod(a);
ivyvod(a);
sort(a);
vyvod(a);
end.