Вычислить сумму элементов на данной картинке

input

procedure TForm1.Button1Click(Sender: TObject);
var a: array of array of integer;
   n, i, j, s: integer;
begin
    n := StrToInt(Edit1.Text);
    Setlength(a, n, n);

    stringGrid1.colcount := n;
    stringGrid1.RowCount := n;
    stringGrid1.Width := stringGrid1.DefaultColWidth * n + n + 2;
    stringGrid1.height := stringGrid1.Defaultrowheight * n + n + 2;

    for i := 0 to n - 1 do
        for j := 0 to n - 1 do
        begin
            a[i, j] := i * n + j + 1;

            stringGrid1.cells[j, i] := IntToStr(a[i, j]);
        end;

    s := 0;

    for i := 0 to n - 1 do
        for j := 0 to n - 1 do
            if i < n - 1 - j then
                s := s + a[i, j];

    i := 0;

    for j := 0 to n - 1 do
        s := s + a[i, j];

    i := n - 1;

    for j := 0 to n - 2 do
        s := s + a[i, j];

    j := 0;

    for i := 0 to n - 2 do
        s := s + a[i, j];

    j := n - 1;

    for i := 0 to n - 1 do
        s := s + a[i, j];

    StaticText1.Caption:=IntToStr(s);
end;

Посчитать сумму элементов в крестообразной области матрицы, центральные элементы необходимо суммировать без повторов.

Нужно сделать 4 теста:

  • Матрица для 1-го теста, размер матрицы 11х11.(единицы)
  • Матрица для 2-го теста, размер матрицы 11х11.(цифры по порядку)
  • Матрица для 3-го теста, размер матрицы 15х15.(единицы)
  • Матрица для 4-го теста, размер матрицы 15х15.(цифры по порядку)

Ответы (1 шт):

Автор решения: Igor
s := 0;
for i := 0 to n - 1 do
  for j := 0 to n - 1 do 
    if (i >= crossStart and i <= crossEnd) or (j >= crossStart and j <= crossEnd) then
      s := s + a[i, j];
→ Ссылка