Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Объявление, способы определения матриц



Матрица (двухмерный массив) объявляется, например, следующим образом: const n=3, m=5; int A[n][m]; где n — количество строк (первая, левая размерность), m — количество столбцов или количество элементов в строке (вторая, правая размерность). По аналогии с одномерным массивом такую матрицу назовём статической в отличие от динамической, которая будет рассмотрена позже. Матрица располагается в оперативной памяти по строкам и занимает непрерывный участок, объём которой равен n*m*sizeof(тип), где тип — тип элементов матрицы (int в примере). Для нашей матрицы A этот объём равен 3*5*4=60 байт. Если в программе написать cout<<endl<<n*m*sizeof(int); то выведем число 60.

Как и одномерный массив, матрицу можно инициализировать при объявлении, используя два уровня фигурных скобок:

int A[n][m]= {{1, -2, 3, -4, 5},

{ 10, 20, 33},

{-11, 22, 300, 400, 500}};

Если в строке указано меньше элементов, чем требуется, то остальные инициализируются нулями. У нас во второй строке с номером 1 (нумерация и строк, и столбцов начинается с нуля) два последних элемента будут нулевыми.

В программах ввода и вывода матрицы предполагается для начала, что n и m такие, что её строка одной или двух матриц (см. пример 6) помещается в одной строке окна ввода, вывода, которого достаточно для всех строк. Желающим предлагается усложнять предложенные фрагменты программ.

Пример 1a. Простейший ввод матрицы можно выполнить так:

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

for (int j=0; j<m; j++)

cin>>A[i][j];

Но в этом варианте в каждой строке окна ввода надо набирать одно число.

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

int i, j, x, y; for (y=wherey(), i=0; i<n; i++, y++)

{ gotoxy(1, y); cout<<"i="<<i;

for (x=6, j=0; j<m; j++, x+=5)

{ gotoxy(x,y); cin>>A[i][j]; } }

Пример 2. Для некоторых (но не для всех) задач элементы матрицы можно определить с помощью датчика случайных чисел:

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

for (int j=0; j<m; j++)

A[i][j]=random(100); // 1

Если числа матрицы должны принадлежать интервалу [ r1, r2), где r2>r1, то вместо //1 надо записать A[i][j]=random(r2-r1)+r1;

Пример 3. Элементы матрицы можно задать по некоторому правилу:

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

for (int j=0; j<m; j++)

A[i][j]=(i+1)*(j+1);

Сформированную так матрицу для некоторых алгоритмов легче анализировать при тестировании программы.

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





Дата публикования: 2015-02-18; Прочитано: 212 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...