Program a; var s: array of integer; x,n,p,sum,max,min,i,k,o,m:integer; begin p:=1; sum:=0; m:=-1; o:=-1; max:=-MaxInt; min:=MaxInt; Write('n= '); read(n); setlength(s,n); Writeln('Перечислите значения:'); for x:=0 to n-1 do begin read (s[x]); k:=s[x]; if (k>0) and ((k mod 5) =0) then sum:=sum+k; if ((k mod 10)=0) and (k>max) then begin max:=k; o:=x; end; if ((k mod 2) = 0) and (k<min) then begin min:=k; m:=x; end; end;Writeln('Сумма = ',sum); if (ABS(o-m)=1) or (o=m) or (o=-1) or (m=-1) then write('Диапазон не найден') else begin if (o>m) then for i:=m+1 to o-1 do p:=s[i]*p else for i:=o+1 to m-1 do p:=s[i]*p; writeln('Произведение = ',p); end; end.
Алгоритм сортировки строки массива по возрастанию методом прямого выбора может быть представлен так: 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.
var s: array of integer;
x,n,p,sum,max,min,i,k,o,m:integer;
begin
p:=1;
sum:=0;
m:=-1;
o:=-1;
max:=-MaxInt;
min:=MaxInt;
Write('n= ');
read(n);
setlength(s,n);
Writeln('Перечислите значения:');
for x:=0 to n-1 do begin
read (s[x]);
k:=s[x];
if (k>0) and ((k mod 5) =0) then sum:=sum+k;
if ((k mod 10)=0) and (k>max) then begin max:=k; o:=x; end;
if ((k mod 2) = 0) and (k<min) then begin min:=k; m:=x; end;
end;Writeln('Сумма = ',sum);
if (ABS(o-m)=1) or (o=m) or (o=-1) or (m=-1) then write('Диапазон не найден')
else begin
if (o>m) then
for i:=m+1 to o-1 do
p:=s[i]*p
else
for i:=o+1 to m-1 do
p:=s[i]*p;
writeln('Произведение = ',p);
end;
end.
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.