
Дана прямоугольная матрица. Найти количество нулевых элементов каждого столбца матрицы и
отсортировать столбцы по убыванию этих характеристик. ПАСКАЛЬ

Ответы на вопрос

Const
n=3;
m=4;
Var
ma:array[1..n,1..m] of integer;
ZeroCount:array[1..m] of integer;
i,j,k,buf:integer;
begin
for i:=1 to n do
for j:=1 to m do
readln(ma[i][j]);
writeln('Matrix:');
for i:=1 to n do
begin
for j:=1 to m do
write(ma[i][j]:4);
writeln;
end;
writeln('Count of zero elements:');
for j:=1 to m do
begin
for i:=1 to n do
if ma[i][j]=0 then inc(ZeroCount[j]);
writeln(j,':',ZeroCount[j]);
end;
for i:=1 to m-1 do
for j:=i+1 to m do
if ZeroCount[i]<ZeroCount[j] then
begin
for k:=1 to n do
begin
buf:=ma[k][i];
ma[k][i]:=ma[k][j];
ma[k][j]:=buf;
end;
buf:=ZeroCount[i];
ZeroCount[i]:=ZeroCount[j];
ZeroCount[j]:=buf;
end;
writeln('Final matrix:');
for i:=1 to n do
begin
for j:=1 to m do
write(ma[i][j]:4);
writeln;
end;
end.
Пример работы программы:
Matrix:
2 0 0 -1
0 0 1 -1
-2 -2 1 -2
Count of zero elements:
1:1
2:2
3:1
4:0
Final matrix:
0 2 0 -1
0 0 1 -1
-2 -2 1 -2



Хорошо, давай пошагово разберемся с задачей на языке Паскаль. Первым шагом будет определение матрицы и ее размеров. Предположим, что у нас есть матрица `A` размером `m x n`, где `m` - количество строк, а `n` - количество столбцов. Теперь создадим процедуру для решения задачи:
```pascal program CountAndSortZeros;
const MAX_SIZE = 100; // Максимальный размер матрицы
type Matrix = array[1..MAX_SIZE, 1..MAX_SIZE] of Integer;
var A: Matrix; m, n: Integer;
// Процедура для ввода матрицы procedure InputMatrix(var A: Matrix; var m, n: Integer); var i, j: Integer; begin Write('Введите количество строк m: '); Readln(m); Write('Введите количество столбцов n: '); Readln(n);
WriteLn('Введите элементы матрицы:'); for i := 1 to m do for j := 1 to n do Read(A[i, j]); end;
// Процедура для нахождения количества нулевых элементов в каждом столбце procedure CountZerosInColumns(const A: Matrix; m, n: Integer; var ZerosCount: array of Integer); var i, j: Integer; begin for j := 1 to n do begin ZerosCount[j] := 0; for i := 1 to m do if A[i, j] = 0 then Inc(ZerosCount[j]); end; end;
// Процедура для сортировки столбцов по убыванию количества нулевых элементов procedure SortColumnsByZerosCount(var A: Matrix; m, n: Integer; const ZerosCount: array of Integer); var i, j, temp: Integer; sorted: Boolean; begin repeat sorted := True; for j := 1 to n - 1 do if ZerosCount[j] < ZerosCount[j + 1] then begin // Поменять местами столбцы for i := 1 to m do begin temp := A[i, j]; A[i, j] := A[i, j + 1]; A[i, j + 1] := temp; end;
// Поменять местами количество нулевых элементов temp := ZerosCount[j]; ZerosCount[j] := ZerosCount[j + 1]; ZerosCount[j + 1] := temp;
sorted := False; end; until sorted; end;
// Процедура для вывода отсортированной матрицы procedure OutputMatrix(const A: Matrix; m, n: Integer); var i, j: Integer; begin WriteLn('Отсортированная матрица:'); for i := 1 to m do begin for j := 1 to n do Write(A[i, j], ' '); WriteLn; end; end;
// Основная программа begin InputMatrix(A, m, n);
// Создаем массив для хранения количества нулевых элементов в каждом столбце var ZerosCount: array[1..MAX_SIZE] of Integer;
CountZerosInColumns(A, m, n, ZerosCount); SortColumnsByZerosCount(A, m, n, ZerosCount); OutputMatrix(A, m, n); end. ```
Надеюсь, это поможет!


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili