Как найти массив чрезмерности NxN. Найти минимальный элемент в заштрихованной области. Границы считаются принадлежащим заштрихованной области?

b57e316ffd71419b8ba10a868a8e1de0.gif

в моем случае (К) то есть правый треугольник.

на pascal ABC

uses crt;
 
{размер массива}
const n = 3;
{объявляем переменные}
var
{матрица размера 9x9}
a: array[1..n, 1..n] of integer;
{сумма}
sum: integer;
{индексы для циклов}
i, j: integer;
 
begin
    clrscr;
    randomize;
 
    {заполняем массив}
    for i := 1 to n do
        for j := 1 to n do
            a[i,j] := random(10);
    
    {печатаем массив}
    writeln;
    writeln('Massiv');
    for i := 1 to n do
    begin
        for j := 1 to n do
            write(a[i,j]:3);
        writeln;
    end;
                
    {находим сумму заштрихованной области}
    {Правая половина}
    sum := 0;
    for i := 1 to n div 1+1 do
        for j := i to n - i + 1 do
            sum := sum + a[i, j];
            
    {Печатаем сумму заштрихованной области}
    writeln;
    writeln;
    writeln('Summa = ', sum);       
 
    readln;
end.


в итоге выходит что он считает верхний треугольник то есть как в (Е)
я более чем уверен дело в параметрах цикла раздела "находим сумму заштрихованной области"
  • Вопрос задан
  • 602 просмотра
Пригласить эксперта
Ответы на вопрос 1
AnnTHony
@AnnTHony
Интроверт
program MatrixArea;

const N = 5;

var
  matrix: array[1..N, 1..N] of integer;
  i, j: integer;
  edge: integer;
  sum: integer;
  min: integer;
begin
  randomize;
  
  {заполняем массив}
  for i := 1 to N do
    for j := 1 to N do
      matrix[i][j] := Random(50);
  
  {печатаем массив}
  for i := 1 to N do
    begin
      for j := 1 to N do
        Write(matrix[i][j]:3);
      WriteLn();
    end;
  
  WriteLn();
  
  {печатаем заштрихованную область массива}
  {находим минимальный элемент и сумму всех элементов в заштрихованной области}
  edge := N;
  min := matrix[1][edge];
  sum := 0;
  
  for i := 1 to N do
    begin
      for j := 1 to N do
        begin
          if (j >= edge) then
            begin
              sum := sum + matrix[i][j];
              if (min > matrix[i][j]) then
                min := matrix[i][j];
              Write(matrix[i][j]:3);
            end
          else
            Write('..':3);
        end;
      if (i < N div 2 + 1) then
        edge := edge - 1
      else
        edge := edge + 1;
      WriteLn();
    end;
  
  WriteLn();
  WriteLn('Сумма: ', sum);
  WriteLn('Минимальный элемент: ', min);
end.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы