БЕСПЛАТНАЯ ПОДГОТОВКА К ЕГЭ ПО ПРОФИЛЬНОЙ МАТЕМАТИКЕ
Подготовься к ЕГЭ-2024 по профильной математике самостоятельно с помощью сервича "1С:Репетитор"!
Понятная теория и эффективные тренажеры с объяснением! Вы успеете подготовиться к экзамену! Начните занятия прямо сейчас!
design_arrow
Обработка двумерных массивов

Обработка двумерных массивов

Обработка двумерных массивов


Для обращения к элементу двумерного массива используют квадратные скобки, запись A[i,j] (A[i][j]) обозначает элемент массива A, расположенный на пересечении строки i и столбца j.

Для обработки элементов двумерного массива используются вложенные циклы


Паскаль

Си

for i:=1 to N do

begin

for j:=1 to M do

begin

...

end;

...

end;

for (i=0; i<= n-1;i++)

{

for (j=0;j<= m-1;j++)

{

}

}


Если необходимо выполнить обработку строки i в матрице из M столбцов, нужно использовать цикл, в котором меняется номер столбца j.

Если необходимо выполнить обработку столбца j в матрице из N строк, нужно использовать цикл, в котором изменяется номер строки i.

Например, приведем полное решение следующего задания:

Дан прямоугольный массив целых положительных чисел 20 х 25. Написать алгоритм поиска столбца с наименьшей суммой элементов. Вывести на печать номер столбца и сумму его элементов. Предполагается, что такой столбец один.

Решение:

Для формирования массива используем генератор случайных чисел. И обязательно организуем вывод полученного массива на экран.

Паскаль

const

n=20;

m=25;

var a:array[1..n,1..m] of integer;

    min, s, Nmin, i, j: integer;

begin

{ формирование массива }

randomize;

for i:=1 to N do

  for j:=1 to m do a[i,j]:=random(100);

{вывод полученного массива на экран}

for i:=1 to N do begin

for j:=1 to m do write(a[i,j]:3);

writeln;

end;

{Подсчитываем сумму элементов первого столбца }

s := 0;

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

{Начальное значение для поиска минимума полагаем равным полученной сумме} 

min := s;

Nmin := 1; {номеру столбца присваиваем 1 }

for j:=2 to M do

begin

     s := 0;

     {Подсчитываем сумму элементов столбца j}

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

     {Если сумма меньше минимума, заменяем минимум и номер столбца }

     if s < min then begin

      min := s;

      Nmin := j;

    end;

end;

writeln('stolbec ',Nmin,' summa ',Min);

end.

Си

#include <stdio.h>

#include <conio.h>

#include <time.h>

#define n 20

#define m 25

void main()

{

int a[n][m];

int min,s, Nmin, i, j;

// формирование массива

srand(time(NULL));

for (i=0; i<n; i++)

for (j=0; j<m; j++) a[i][j]=rand() % 100;

//вывод полученного массива на экран

 

Паскаль

for (i=0; i<n; i++) {

for (j=0; j<m; j++) printf(" %4d ",a[i][j]);

printf("\n");

}

 // Подсчитываем сумму элементов первого столбца

s= 0;

for (i=0; i<n; i++) s = s + a[i][0];

// Начальное значение для поиска минимума полагаем равным полученной сумме

min = s;

Nmin = 1;// номеру столбца присваиваем 1

 

for (j=1; j<m; j++)

    {

        s = 0;

        //Подсчитываем сумму элементов столбца j

       for (i=0; i<n; i++) s = s + a[i][j];

       // Если сумма меньше минимума, заменяем минимум и номер столбца

       if (s < min) { min = s; Nmin= j; }

    }

printf("stolbec %d summa %d", Nmin, min );

}