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