Программа
CONST N=4; { Количество строк матрицы }
TYPE Matrix=array [1..N,1..N] of integer;
VectorType=array [1..N] of integer; { Вектор-тип }
VAR Vector:VectorType; { Вектор }
B:Matrix; { Матрица }
PROCEDURE InputMatrix (var B:Matrix); { Процедура ввода матрицы }
Var i,j:integer; { Счетчики }
Begin
for i:=1 to N do { Цикл ввода строк матрицы }
for j:=1 to N do { Цикл ввода элементов матрицы }
begin
Write('Введите элемент [',i,',',j,'] ');
{ Вывод приглашения ввести элемент матрицы }
ReadLn(B[i,j]) { Ввод элемента матрицы }
end
End;
PROCEDURE OutputMatrix (B:Matrix); { Процедура вывода матрицы }
Var i,j:integer; { Счетчики }
Begin
for i:=1 to N do { Цикл вывода строк матрицы }
begin
for j:=1 to N do { Цикл вывода элементов матрицы }
Write (B[i,j]:5,' '); { Вывод элемента матрицы }
WriteLn { Вывод конца строки }
end
End;
PROCEDURE GetSumColumn (B:Matrix; Vector:VectorType);
{ Процедура получения суммы элементов столбцов }
Var i,j:integer; { Счетчики }
Sum:integer; { Сумма элементов столбца матрицы }
SumFlag:boolean; { Флаг существования положительных элементов вектора }
Begin
SumFlag:=FALSE; { Сброс флага вектора }
for j:=1 to N do { Цикл просмотра столбцов матрицы }
if Vector[j]>0 then { Условие набора суммы по j-ому столбцу матрицы }
begin
SumFlag:=TRUE; { Подъем флага вектора }
Sum:=0; { Обнуление суммы }
for i:=1 to N do Sum:=Sum+B[i,j]; { Цикл набора суммы элементов столбца }
WriteLn('Сумма элементов ',j,'-го столбца матрицы =',Sum)
{ Вывод суммы элементов столбца }
end;
if not SumFlag then WriteLn('В заданном векторе нет положительных элементов')
{ Вывод сообщения при отсутствии положительных элементов вектора }
End;
PROCEDURE ReplacementColumn(var B:Matrix; Vector:VectorType);
{ Замена вектором столбцов матрицы }
Var Flag:boolean; { Флаг наличия отрицательных элементов }
i,j:integer; { Счетчики }
Begin
for j:=1 to N do { Цикл просмотра столбцов матрицы }
begin
Flag:=FALSE; { Сброс флага }
for i:=1 to N do { Цикл просмотра столбца }
begin
Flag:=B[i,j]<0; { Вычисление флага }
if Flag then Break { Прерывание цикла при обнаружении отрицательного элемента }
end;
if not Flag then for i:=1 to N do B[i,j]:=Vector[i]
{ Замена столбца без отрицательных элементов элементами вектора }
end
End;
PROCEDURE InputVector (var Vector:VectorType); { Процедура ввода вектора }
Var i:integer; { Счетчик }
Begin
for i:=1 to N do { Цикл ввода элементов вектора }
begin
Write('Введите элемент [',i,'] ');
{ Вывод приглашения ввести элемент вектора }
ReadLn(Vector[i]) { Ввод элемента вектора }
end
End;
PROCEDURE OutputVector (B:VectorType); { Процедура вывода вектора }
Var i:integer; { Счетчик }
Begin
for i:=1 to N do { Цикл вывода вектора }
Write (B[i],' '); { Вывод элемента вектора }
WriteLn { Вывод конца строки }
End;
BEGIN
WriteLn; { Пропуск строки }
InputMatrix(B); { Ввод матрицы }
WriteLn; { Пропуск строки }
InputVector(Vector); { Ввод вектора }
WriteLn; { Пропуск строки }
WriteLn('Исходная матрица: '); { Вывод заголовка }
OutputMatrix(B); { Вывод матрицы }
WriteLn; { Пропуск строки }
WriteLn('Вектор: '); { Вывод заголовка }
OutputVector(Vector); { Вывод вектора }
WriteLn; { Пропуск строки }
GetSumColumn(B,Vector); { Получение сумм элементов столбцов матрицы }
WriteLn; { Пропуск строки }
ReplacementColumn(B,Vector); { Замена вектором столбцов }
WriteLn('Модифицированная матрица: '); { Вывод заголовка }
OutputMatrix(B); { Вывод матрицы }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию