Получить элементы вектора x, равные сумме чётных элементов каждой строки - Free Pascal

Формулировка задачи:

Дана квадратная матрица порядка n(n=5). Получить элементы вектора x, равные сумме чётных элементов каждой строки, если среди элементов матрицы нет отрицательных элементов, иначе каждый элемент вектора x равен произведению элементов столбца. С комментариями, пожалуйста.

Код к задаче: «Получить элементы вектора x, равные сумме чётных элементов каждой строки - Free Pascal»

textual
uses crt;
const n=5;//размер матрицы
var a:array[1..n,1..n] of integer; //матрица из чисел от -70 до 70
    x:array[1..n] of longint;//вектор из чисел не более 70^5
    i,j,k:byte; //счетчики циклов и фиксатор отрицательных
begin
clrscr;
randomize;
writeln('Введите ',n*n,' целых чисел  по модулю не более 70');
for i:=1 to n do
for j:=1 to n do
repeat
write('a[',i,',',j,']=');
readln(a[i,j]);
until abs(a[i,j])<=70; //вод с проверкой, чтобы произведение 5 чисел точно не вышло за пределы  типа Longint
writeln('Матрица');
k:=0; //пока отрицательных нет
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    write(a[i,j]:4);
    if a[i,j]<0 then k:=1; //если есть
   end;
  writeln;
 end;
if k=0 then
 begin
  writeln('Отрицательных элементов нет');
  writeln('Вектор Х сумм четных в строках');
  for i:=1 to n do
   begin
    x[i]:=0;
    for j:=1 to n do  //считаем суммы четных в строках
    if a[i,j] mod 2=0 then x[i]:=x[i]+a[i,j];
   end;
 end
else
 begin
  writeln('Отрицательные элементы есть');
  writeln('Вектор Х произведений в столбцах');
  for j:=1 to n do
   begin
    x[j]:=1;
    for i:=1 to n do
    x[j]:=x[j]*a[i,j];//считаем произведения в столбцах
   end;
 end;
for i:=1 to n do
write(x[i],' ');
readln
end.

10   голосов, оценка 3.900 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы