Вы находитесь на странице: 1из 4

Матрицы

В С++ определены и двумерные массивы (матрицы), например


матрица A, состоящая из 4 строк и 5 столбцов.
6 −9 7 13 19
5 8 3 8 22
A= 3 7 88 33 71
55 77 88 37 61

Описание двумерного массива (матрицы):


тип имя_переменной [n][m];
где n – количество строк в матрице (строки нумеруются от 0 до n-1),
m – количество столбцов (столбцы нумеруются от 0 до m-1).
Например, двумерный массив int v[3][7] можно представить в виде
матрицы размером 3х7:
0-ой 1-ый 2-ой 3-ий 4-ый 5-ый 6-ой
столбец столбец столбец столбец столбец столбец столбец
0-ая строка v[0][0] v[0][1] v[0][2] v[0][3] v[0][4] v[0][5] v[0][6]
1-ая строка v[1][0] v[1][1] v[1][2] v[1][3] v[1][4] v[1][5] v[1][6]
2-ая строка v[2][0] v[2][1] v[2][2] v[2][3] v[2][4] v[2][5] v[2][6]

Вместе с объявлением можно проинициализировать:


int Х[2][3]={{1,2,3},{4,5,6}}; или int S[2][2]={1, 2, 3, 4};

Ввод двумерного массива c клавиатуры


Пусть дана матрица int a[5][5]

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


for ( j=0; j<5; j++)
cin>>a[i][j];
Вывод двумерного массива

for (i=0;i<5;i++)
{ for (j=0;j<5;j++)
cout<<a[i][j]<<” “;
cout<<endl;
}

Заполнение случайными числами


#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int a[5][10];
srand(time(NULL));
for (int i = 0; i <5; i++)
{
for (int j=0;j<10;j++)
{
a[i][j] = rand()%10;
cout << a[i] [j]<< “ “;
}

cout<<endl;
}
cin.get();
}
Решение задач
1. Дана матрица a(3,3). Найти сумму ее элементов.
Организуем ввод через клавиатуру.

#include <iostream>
using namespace std;
int main()
{
int a[3][3];
int i,j;
for ( i=0; i<3; i++) //ввод матрицы
for ( j=0; j<3; j++)
cin>>a[i][j];

int s=0;
for (i = 0; i <3; i++)//подсчет суммы элементов
for (j=0;j<3;j++)
s=s+a[i][j];

cout << “s= “<<s;


cin.get();
}

2. Дана матрица x(4,5). Найти количество четных элементов.

Организуем ввод через генератор случайных чисел.

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int x[4][5], i, j;
srand(time(NULL));
for (int i = 0; i <4; i++) // ввод через рандом
{ for (int j=0;j<5;j++)
{ x[i][j] = rand()%10;
cout << x[i] [j]<< “ “;}
cout<<endl; }

int k=0;
for ( i=0; i<3; i++) //подсчет количества нечетных чисел
for ( j=0; j<3; j++)
if (x[i][j]%2==0) k++;

cout << “k= “<<k;

cin.get();
}

3. Дана матрица a(5,5). Заменить отрицательные элементы на 0.

Организуем ввод через генератор случайных чисел.

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
const int n=5;
int a[n][n], i, j;
srand(time(NULL));
for (int i = 0; i <n; i++) // ввод через рандом
{
for (int j=0;j<n;j++)
{
a[i][j] = rand()%11-5;
cout << a[i] [j]<< “ “;
}

cout<<endl;
}
for ( i=0; i<n; i++) //основная часть , находим отрицательные элементы
for ( j=0; j<n; j++) // и заменяем на 0
if (a[i][j]<0) a[i][j]=0;

cout<<endl; // вставим пустую строку


for (i=0;i<n;i++) //вывод матрицы
{ for (j=0;j<n;j++)
cout<<a[i][j]<<” “;
cout<<endl;
}

cin.get();
}