Читайте также: |
|
http://iguania.ru/uchebnik-po-osnovam-programmirovaniya-dlya-nachinaiuschich/glava-15-dvumernie-massivi.html
В С++ можно использовать многомерные массивы. Элементом массива может быть в свою очередь тоже массив. Таким образом, мы приходим к понятию двумерного массива или матрицы, а также многомерных массивов.
Определение многомерного массива:
<тип> <имя массива> [<размер1>][<размер2>] … [<размерn>];
Например:
int MATRIC [2][3]; // матрица целых чисел размерностью 2х3
Для доступа к элементу многомерного массива используется конструкция
<имя массива> [<индекс1>][<индекс2>] … [<индексn>];
В памяти компьютера многомерный массив размещается так, что вначале меняется самый правый индекс.
Например:
int A [2][3];
A[0][0], A[0][1],A[0][2],
A[1][0], A[1][1],A[1][2]
Для наглядности двумерный массив можно представить в виде таблицы с числом строк, равным первому размеру массива, и числом столбцов, равным второму размеру массива, например:
Массив А | Столбец 0 | Столбец 1 | Столбец 2 |
Строка 0 | индексы [0][0] | индексы [0][1] | индексы [0][2] |
Строка 1 | индексы [1][0] | индексы [1][1] | индексы [1][2] |
Как и одномерные, многомерные массивы можно инициализировать при объявлении.
int A[2][3]={{4,3,2},{1,-1,-2}};
double B[2][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};
Может быть использована и более компактная запись:
int A[2][3]={4,3,2,1,-1,-2};
В этом случае многомерный массив инициализируется таким же образом, как если бы он был одномерным. Если необходимо обнулить содержимое многомерного массива можно поступить следующим образом:
int imassiv[2][3]= {0};
Задача: Дана целочисленная матрица размером N на M (максимум 5 на 10). Осуществить ввод матрицы. Все элементы с нечетным произведением номера строки и номера столбца увеличить в два раза. Полученную матрицу вывести на экран.
#include <iostream>
using namespace std;
int main()
{
int n,m,i,j;
int a[5][10];
cout<<"Input size of matrix (max 5X10):";
cin>>n>>m;
if((n<1)||(m<1)||(n>5)||(m>10)) {cout<<"Error"; return 1;}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>a[i][j];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if((i*j)%2==1) a[i][j]*=2;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
Задача: Дана квадратная целочисленная матрица размерностью максимум 10х10. Организовать заполнение матрицы случайными числами. В каждой строке матрицы найти максимальный элемент и поменять его местами с элементом главной диагонали в этой строке. Исходную и полученную матрицу вывести на экран.
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int n,i,j,max,p;
int a[10][10];
//Вод данных
cout<<"Input size of matrix (max 10):";
cin>>n;
if ((n<1)||(n>10)) {cout<<"Error"; return 1;}
srand(time(NULL));
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
a[i][j]=rand()%10;
cout<<"A["<<i<<"]["<<j<<"]="<<a[i][j]<<" ";
if (j==n-1) cout<<endl;
}
Дата добавления: 2015-07-11; просмотров: 62 | Нарушение авторских прав