Программное обеспечение

Опишите пожалуйста каждое действие и каждую переменную для чего она нужна и тд.

1) характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик (оформить в виде процедуры) .

program aaa;
Var a:array[1..5, 1..5] of integer; {исходный массив}
s:array[1..5]of integer; {массив характеристик столбцов}
j,k,m, min, pr, w,z:integer;
Procedure obmen(Var x,y:integer);
Var prom:integer;
begin
prom:=x;
x:=y;
y:=prom;
end; {конец процедуры}
begin
for j:=1 to 5 do
for k:=1 to 5 do
a[j,k]:=Random(20)-10;
writeln('Исходный массив ');
for j:=1 to 5 do
begin
for k:=1 to 5 do
write( a[j,k]:3,' ');
writeln;
end;
for k:=1 to 5 do
begin
s[k]:=0;
for j:=1 to 5 do
if (a[j,k]<0) and (a[j,k] mod 2<>0) then s[k]:=s[k]+abs(a[j,k]);
end;
writeln('массив характеристик столбцов: ');
for k:=1 to 5 do
write(s[k]:3, ' ');
writeln;
{сортировка массива характеристик S}
for k:=1 to 4 do
begin
min:=s[k]; m:=k;
for j:=k+1 to 5 do
if s[j]< min then begin min:=s[j]; m:=j end;
obmen(s[k],s[m]);
for w:=1 to 5 do {перестановка столбцов}
obmen(a[w,k],a[w,m]);
end;
writeln('отсортированный массив характеристик: ');
for k:=1 to 5 do
write(s[k]:3, ' ');
writeln;

writeln('матрица с переставленными столбцами в соответствии с ростом характеристик: ');
for j:=1 to 5 do
begin
for k:=1 to 5 do
write( a[j,k]:3,' ');
writeln;
end;
end.

2) найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент (оформить в виде функции) .

program zadacha2;
Type mas=array[1..5, 1..5] of integer;
Var
a:mas ;
j, sum,k, fl: integer;
function summa(b:mas; n:integer):integer;
Var s, x:integer;
begin
s:=0;
for x:=1 to 5 do
s:=s+b[x,n] ;
summa:=s;
end;
begin
writeln('Исходный массив');
for j:=1 to 5 do
begin
for k:=1 to 5 do
begin
a[j,k]:=Random(10)-3;
write (a[j, k]:4, ' ')
end;
writeln;
end;
for k:=1 to 5 do
begin
fl:=0;
for j:=1 to 5 do
if a[j,k]<0 then fl:=1;
if fl=1 then begin sum:= summa(a,k);
writeln('Сумма элементов ', k, '-го столбца=', sum);end;
end;
end.

В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1. Номер минимального элемента массива.
2. Сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает единицу, а потом — все остальные.

program aaa;
Var a, b:array[1..100] of real; {исходный массив}
min, s:real;
j,k,k1, k2, n:integer;
begin
writeln('Введите размерность массива ');
readln(n);
writeln('Введите элементы массива ');
for j:=1 to n do
readln(a[j]);
writeln('Исходный массив ');
for j:=1 to n do
write( a[j],' ');
writeln;
min:=a[1]; k:=1;
for j:=2 to n do
if a[j] < min then begin min:=a[j]; k:=j end;
writeln('Минимальный элемент массива= ', min);
writeln('Номер минимального элемента= ', k);
for j:=1 to n do
if a[j] < 0 then begin k1:=j; j:=n+1 end; {номер первого отрицательного элемента}
for j:=k1+1 to n do
if a[j] < 0 then begin k2:=j; j:=n+1 end; {номер второго отрицательного элемента}
for j:=k1+1 to k2-1 do
s:=s+a[j];
writeln('Сумма элементов массива, расположенных между первым и вторым отрицательными элементами= ', s);
{преобразовываем массив}
k:=0;
for j:=1 to n do
if abs(a[j]) < 1 then begin k:=k+1; b[k]:=a[j]; end;
for j:=1 to n do
if abs(a[j]) >= 1 then begin k:=k+1; b[k]:=a[j]; end;
writeln('Преобразованный массив ');
for j:=1 to n do
write( b[j],' ');
end.
Вот что поместилось:

program aaa;
Var a:array[1..5, 1..5] of integer; {исходный массив}
s:array[1..5]of integer; {массив характеристик столбцов}
j,k,m, min, pr, w,z:integer;
Procedure obmen(Var x,y:integer); {процедура осуществляет обмен значений двух переменных}
Var prom:integer;
begin
prom:=x; prom-промежуточная переменная, позволяющая выполнить обмен
x:=y;
y:=prom;
end; {конец процедуры}
begin
for j:=1 to 5 do j – номер столбца в матрице (перебираем столбцы)
for k:=1 to 5 do k – номер строки (перебираем строки)
a[j,k]:=Random(20)-10; каждому элементу матрицы присваиваем значение
случайного числа от -10 до 10.
writeln('Исходный массив '); выводим массив на экран построчно
for j:=1 to 5 do
begin
for k:=1 to 5 do
write( a[j,k]:3,' '); элементы выводим на экран, под каждый элемент матрицы отводим 3 позиции на экране
writeln;
end;
for k:=1 to 5 do перебираем столбцы
begin
s[k]:=0; s[k] – сумма модулей отрицательных элементов к-го столбца
for j:=1 to 5 do перебираем строки
if (a[j,k]<0) and (a[j,k] mod 2<>0) then s[k]:=s[k]+abs(a[j,k]); если элемент отрицательный и нечетный, прибавляем его к сумме
end;
writeln('массив характеристик столбцов: ');
for k:=1 to 5 do выводим на экран массив S – массив характеристик
write(s[k]:3, ' ');
writeln;
-----
{сортировка массива характеристик S по убыванию методом выбора путем нахождения минимального элемента и постановки его на первое место, потом находим минимальный элемент среди оставшихся и ставим его на второе место и т. д. После нахождения минимального элемента запоминаем его номер в переменной m, потом меняем местами элементы всех строк в соответствии с тем, как обменялись местами элементы в массив характеристик. }
for k:=1 to 4 do
begin
min:=s[k]; m:=k;
for j:=k+1 to 5 do
if s[j]< min then begin min:=s[j]; m:=j end;
obmen(s[k],s[m]);
for w:=1 to 5 do {перестановка столбцов}
obmen(a[w,k],a[w,m]);
end;
-----
writeln('отсортированный массив характеристик: ');
for k:=1 to 5 do выводим массив характеристик на экран, чтобы можно было проверить результат, правильно ли поменялись местами столбцы
write(s[k]:3, ' ');
writeln;

writeln('матрица с переставленными столбцами в соответствии с ростом характеристик: ');
for j:=1 to 5 do вывод полученной матрицы.
begin
for k:=1 to 5 do
write( a[j,k]:3,' ');
writeln;
end;
end.
найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент (оформить в виде функции)
program zadacha2;
Type mas=array[1..5, 1..5] of integer;
Var
a:mas ;
j, sum,k, fl: integer;
function summa(b:mas; n:integer):integer; функция находит сумму элементов матрицы b в столбце с номером n.
Var s, x:integer;
begin
s:=0;
for x:=1 to 5 do перебираем строки от 1 до 5, х-номер строки
s:=s+b[x,n] ; , суммируем элементы столбца с номером n.
summa:=s;
end; конец функции
Убайдулла Абдуллаев
Убайдулла Абдуллаев
56 353
Лучший ответ

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