Преобразовать исходную матрицу в новую по формуле - Pascal ABC

Узнай цену своей работы

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

Вычислить сумму элементов главной диагонали матрицы В (MxМ), М<=17. Если сумма окажется >10 , то исходную матрицу преобразовать по формуле В(I,J) = В(I,J) + 3.5, если сумма будет ≤10, то преобразование выполнить по формуле В(I,J) = В(I,J) – 3.5. Вычисленную сумму и элементы преобразованной матрицы вывести на экран

Решение задачи: «Преобразовать исходную матрицу в новую по формуле»

textual
Листинг программы
const
  m = 17;
 
type
  mas = array[1..m, 1..m] of real;
 
var
  n: integer;
  S: real;
 
procedure vv_preobr(var x: mas; f: boolean);
var
  i, j: integer;
begin
  if f then S := 0;
  for i := 1 to n do
  begin
    for j := 1 to n do
      if f then //Формируем массив и вычисляем сумму
      begin
        x[i, j] := -random * 5 + random(16);
        write(x[i, j]:7:2);
        if i = j then S := S + x[i, j]
      end
      else //Преобразовываем массив
        begin
          if S > 10 then x[i, j] := x[i, j] + 3.5
          else x[i, j] := x[i, j] - 3.5;
          write(x[i, j]:7:2)
        end;
    writeln
  end
end;
 
var
  a: mas;
 
begin
  randomize;
  repeat
    writeln('n=?, n<=17');
    readln(n)
  until (n > 1) and (n <= 17);
  writeln('A:');
  vv_preobr(a, true);
  writeln('summa = ', S:0:3);
  writeln('A'':');
  vv_preobr(a, false);
  readln
end.

Объяснение кода листинга программы

  1. В начале кода объявляются необходимые переменные и константы.
  2. Создается тип данных mas, который представляет собой массив целых чисел размером от 1 до 17.
  3. Объявляется переменная n типа integer, которая будет использоваться для чтения размеров матрицы от пользователя.
  4. Объявляется переменная S типа real, которая будет использоваться для хранения суммы элементов матрицы.
  5. Создается процедура vv_preobr, которая принимает две переменные: x и f. Переменная x также является массивом типа mas.
  6. Внутри процедуры vv_preobr объявляются две переменные i и j типа integer.
  7. В цикле for происходит следующее:
    • Если значение переменной f равно истине, то вычисляется случайное число от -5 до 5 и присваивается элементу x[i, j]. Также выводится значение x[i, j] на экран.
    • Если значение переменной f равно ложью, то значение x[i, j] увеличивается на 3.5 или уменьшается на 3.5 в зависимости от значения переменной S. Значение x[i, j] также выводится на экран.
    • После выполнения цикла for выводится значение переменной S на экран.
  8. В основной части кода считывается размер матрицы от пользователя.
  9. Вызывается процедура vv_preobr с аргументом true, чтобы преобразовать матрицу по заданной формуле.
  10. Вызывается процедура vv_preobr с аргументом false, чтобы преобразовать матрицу обратно в исходное состояние.
  11. Выводится сообщение с результатом выполнения программы.

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы