Программа
CONST QLine=4; {Количество строк матрицы}
QCol=4; {Количество столбцов матрицы}
TYPE Element=integer; {Тип элементов матриц}
Lin=1..QLine; {Тип - интервал номеров строк}
Col=1..QCol; {Тип - интервал номеров столбцов}
Matrix=array[Lin,Col] of Element; {Тип - матрица}
PROCEDURE InputMatrix(var M:Matrix); {Ввод матрицы}
Var i:Lin; {Счетчик строк}
j:Col; {Счетчик столбцов}
Begin
WriteLn; {Пропуск строки}
WriteLn('ВВОД МАТРИЦЫ:'); {Вывод приглашения ко вводу матрицы}
for i:=1 to QLine do {Цикл ввода строк}
for j:=1 to QCol do {Цикл ввода строки}
begin
Write('Ведите элемент [',i,',',j,'] '); {Вывод приглашения}
ReadLn(M[i,j]) {Ввод элемента матрицы}
end;
WriteLn; {Пропуск строки}
End;
PROCEDURE OutputMatrix(var M:Matrix); {Вывод матрицы}
Var i:Lin; {Счетчик строк}
j:Col; {Счетчик столбцов}
Begin
WriteLn; {Пропуск строки}
WriteLn('МАТРИЦА:'); {Вывод заголовка}
for i:=1 to QLine do {Цикл вывода строк}
begin
for j:=1 to QCol do {Цикл вывода строки}
Write(M[i,j]:3,' '); {Вывод элемента}
WriteLn {Вывод конца строки}
end;
WriteLn; {Пропуск строки}
End;
FUNCTION Sum(A:Matrix; C:Col):Element; {Функция подсчета суммы элементов столбца}
Var S:Element; {Сумма}
i:Col; {Счетчик строк}
Begin
S:=0; {Начальное определение суммы}
for i:=1 to QLine do {Цикл просмотра столбца}
S:=S+A[i,C]; {Набор суммы}
Sum:=S {Определение значения функции}
End;
PROCEDURE SwopColumn(var M:Matrix; A,B:Col); {Перестановка столбцов матрицы}
Var i:Lin; {Счетчик строк}
Buf:Element; {Буфер обмена}
Begin
for i:=1 to QLine do {Цикл перестановки столбцов}
begin
{Перестановка элементов:}
Buf:=M[i,A];
M[i,A]:=M[i,B];
M[i,B]:=Buf;
end
End;
PROCEDURE SortColumn(var A:Matrix); {Процедура сортировки столбцов матрицы}
Var i,j:Col; {Счетчики столбцов}
SwopColNum:Col; {Номер столбца с минимальной суммой элементов}
Begin
for i:=1 to QCol-1 do {Цикл сортировки}
begin
SwopColNum:=i; {Начальное определение номера столбца}
for j:=i+1 to QCol do {Цикл поиска столбца с минимальной суммой элементов}
if Sum(A,j)<Sum(A,SwopColNum) {Сравнение сумм элементов столбцов}
then SwopColNum:=j; {Переопределение номера столбца}
SwopColumn(A,i,SwopColNum) {Перестановка столбцов}
end
End;
VAR B,C:Matrix; {Матрицы}
BEGIN
InputMatrix(B); {Ввод матрицы B}
OutputMatrix(B); {Вывод матрицы B}
C:=B; {Определение матрицы C}
SortColumn(C); {Сортировка столбцов матрицы С}
OutputMatrix(C); {Вывод матрицы С}
END.
СХЕМА ПРОГРАММЫ
***************
* *
* П У С К *
* *
***************
:
:
*****************
* * * *
* *InputMatrix* *
* * * *
* * (B) * *
* * * *
*****************
:
:
*****************
* * * *
* * Output * *
* * Matrix * *
* * (B) * *
* * * *
*****************
:
:
:
*****************
* *
* *
* C:=B *
* *
* *
*****************
:
:
*****************
* * * *
* * SortColumn* *
* * * *
* * (C) * *
* * * *
*****************
:
:
*****************
* * * *
* * Output * *
* * Matrix * *
* * (C) * *
* * * *
*****************
:
:
***************
* *
* К О Н Е Ц *
* *
***************
СХЕМА ПРОЦЕДУРЫ InputMatrix
***************
* *
* П У С К *
* *
***************
:
:
***************** ┌─
* * │
* * │ Инициализация
* i:=1 *∙∙│
* * │ счетчика цикла
* * │
***************** └─
:
:∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: :
: :
***************** ┌─ :
* * │ ─┐ *****************
* * │ Инициализация │ * *
* j:=1 *∙∙│ Переопределение │ * *
* * │ счетчика цикла │∙∙* i:=i+1 *
* * │ счетчика цикла │ * *
***************** └─ │ * *
: ─┘ *****************
: :
: :
: :
: :
:∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙. :
: : :
: ***************** ┌─ :
: * * │ :
: * * │ Переопределение :
: * j:=j+1 *∙∙∙∙∙∙∙│ :
: * * │ счетчика цикла :
: * * │ :
: ***************** └─ :
: : :
: : :
: ***************** ┌─ :
: │ Ввод :
: * * │ :
: M[i,j] ∙∙∙∙∙∙∙│ элемента :
* * * │ :
* * │ матрицы :
* * ***************** └─ :
* * Нет : :
* j>QCol *∙∙∙∙∙∙∙∙∙∙∙∙∙∙' :
* * :
* * :
* * :
* :
: Да :
: :
* :
* * :
* * :
* * Нет :
* i>QLine *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
* *
* *
* *
*
: Да
:
:
***************
* *
* К О Н Е Ц *
* *
***************
СХЕМА ПРОЦЕДУРЫ OutputMatrix
***************
* *
* П У С К *
* *
***************
:
:
*****************
* Вывод *
* заголовка *
*****************
:
:
***************** ┌─
* * │
* * │ Инициализация
* i:=1 *∙∙│
* * │ счетчика цикла
* * │
***************** └─
:
:∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: :
: :
***************** ┌─ :
* * │ ─┐ *****************
* * │ Инициализация │ * *
* j:=1 *∙∙│ Переопределение │ * *
* * │ счетчика цикла │∙∙* i:=i+1 *
* * │ счетчика цикла │ * *
***************** └─ │ * *
: ─┘ *****************
: :
: :
: :
: :
:∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙. :
: : :
: ***************** ┌─ :
: * * │ :
: * * │ Переопределение :
: * j:=j+1 *∙∙∙∙∙∙∙│ :
: * * │ счетчика цикла :
: * * │ :
: ***************** └─ :
: : :
: : :
: ***************** ┌─ :
: │ Вывод :
: * * │ :
: M[i,j] ∙∙∙∙∙∙∙│ элемента :
* * * │ :
* * │ матрицы :
* * ***************** └─ :
* * Нет : :
* j>QCol *∙∙∙∙∙∙∙∙∙∙∙∙∙∙' :
* * :
* * *****************
* *
* * Вывод *
: Да конца
: * строки *
*
* * *****************
* * :
* * Нет :
* i>QLine *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
* *
* *
* *
*
: Да
:
:
:
*****************
* Вывод *
конца
* строки *
*****************
:
:
***************
* *
* К О Н Е Ц *
* *
***************
СХЕМА ПРОЦЕДУРЫ SortColumn
***************
* *
* П У С К *
* *
***************
:
:
***************** ┌─
* * │
* * │ Инициализация
* i:=1 *∙∙│
* * │ счетчика цикла
* * │
***************** └─
:
:∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: :
***************** ┌─ :
* * │ :
* * │ Начальное :
* SwopColNum:=1 *∙∙│ определение :
* * │ номера :
* * │ столбца :
***************** └─ :
: :
: :
: :
***************** ┌─ :
* * │ ─┐ *****************
* * │ Инициализация │ * *
* j:=i+1 *∙∙│ Переопределение │ * *
* * │ счетчика цикла │∙∙* i:=i+1 *
* * │ счетчика цикла │ * *
***************** └─ │ * *
: ─┘ *****************
: :
: :
: :
: :
:∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙. :
: : :
: ***************** ┌─ :
: * * │ :
: * SwopColNum:= * │ Переопределение :
: * *∙∙∙│ :
: * SwopColNum+1 * │ номера столбца :
: * * │ :
: ***************** └─ :
: : :
: :Да :
: * :
: * * ┌─ :
: * * │ Сравнение столбцов: :
: Нет * * │ :
:∙∙∙∙∙∙∙∙<∙∙∙∙∙* *∙∙∙│ Sum(A,j)< :
* * * │ Sum(A,SwopColNum) :
* * * * │ :
* * * * └─ :
* * Нет * :
* j>QLine *∙∙∙∙∙∙∙∙∙∙∙∙∙∙' :
* * :
* * :
* * :
* :
: Да :
: :
: :
* :
* * :
* * :
* * Нет :
* i>QLine-1 *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
* *
* *
* *
*
: Да
:
:
***************** ┌─
* * * * │
* * * * │ Перестановка столбцов
* * SwopColumn* *∙∙∙│ i,SwopLineNum
* * * * │ в матрице
* * * * │
***************** └─
:
:
***************
* *
* К О Н Е Ц *
* *
***************
СХЕМА ПРОЦЕДУРЫ SwopColumn
***************
* *
* П У С К *
* *
***************
:
:
***************** ┌─
* * │
* * │ Инициализация
* i:=1 *∙∙│
* * │ счетчика цикла
* * │
***************** └─
:
:
:
:∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: ***************** ┌─
: * * │
: * * │ Переопределение
: * i:=i+1 *∙∙∙∙│
: * * │ счетчика цикла
: * * │
: ***************** └─
: :
: :
: ***************** ┌─
: * * │
: * Buf:=M[i,A] * │ Перестановка
: * M[i,A]:=M[i,B]*∙∙∙∙│
* * M[i,B]:=Buf * │ элементов
* * * * │
* * ***************** └─
* * Нет :
* i>QCol *∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
* *
* *
* *
*
: Да
:
:
:
***************
* *
* К О Н Е Ц *
* *
***************
СХЕМА ПРОЦЕДУРЫ Sum
***************
* *
* П У С К *
* *
***************
:
:
***************** ┌─
* * │
* * │ Начальное определение
* S:=0 *∙∙│
* * │ суммы
* * │
***************** └─
:
:
:
***************** ┌─
* * │
* * │ Инициализация
* i:=1 *∙∙│
* * │ счетчика цикла
* * │
***************** └─
:
:
:
:∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: ***************** ┌─
: * * │
: * * │ Переопределение
: * i:=i+1 *∙∙∙∙│
: * * │ счетчика цикла
: * * │
: ***************** └─
: :
: :
: ***************** ┌─
: * * │
: * * │ Набор
: * S:=S+A[i,C] *∙∙∙∙│
: * * │ суммы
* * * │
* * ***************** └─
* * :
* * Нет :
* i>QLine *∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
* *
* *
* *
*
: Да
:
:
***************** ┌─
* * │
* * │ Определение
* Sum:=Q *∙∙│ значения
* * │ функции
* * │
***************** └─
:
:
***************
* *
* К О Н Е Ц *
* *
***************
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию