Вишедимензиони низови (матрице)

Матрице представљају низ низова. Сви елементи матрице морају да буду истог типа.
Матрица Anxm  је дводимензиони низ. Матрица је у суштини табела која се састоји од редова (хоризонталне групе елемената) и колона (вертикалне групе елемената). У пресеку колоне c и реда r налази се елеменат са индексима r и c.

Декларација дводимензионог низа:

int A[5][4]

елементи матрице са одговарајућим индексима:

A[0][0]  A[0][1]  A[0][2]  A[0][3]
A[1][0]  A[1][1]  A[1][2]  A[1][3]
A[2][0]  A[2][1]  A[2][2]  A[2][3]
A[3][0]  A[3][1]  A[3][2]  A[3][3]
A[4][0]  A[4][1]  A[4][2]  A[4][3]

Значи дводимензиони низ се декларише на сличан начин као и једнодимензиони:

tip ime[r][c]

где tip означава тип елемената дводимензионог низа, ime – име променљиве, r – број редова и c – број колона.
Индекси елемената дводимензионог низа се крећу од 0 до r-1 (за редове) и од 0 до c-1 (за колоне). Приступ елементима дводимензионог низа је преко имена низа и индекса одговарајућег реда и колоне (a[1][3], a[0][1]…)

Као низови, и матрице могу бити статичке и динамичке. Статичке матрице се дефинишу приликом превођења програма, а динамичке се дефинишу приликом извршавања програма. Статичке матрице се дефинишу као правоугаона структура (види пример изнад), иако се у меморији памте на узастопним меморијским локацијама: ред по ред. Динамичке матрице се реализују као низови показивача на низове.

Статичке матрице

пример 1.
Написати програм који приказује таблицу множења од 1-10.

#include <iostream>
 using namespace std;
 int main()
 {
      int m[10][10];int i,j;
      for(i=0;i<10;i++)
           for(j=0; j<10; j++)
               m[i][j] = (i+1)*(j+1);
      for(i=0; i<10; i++)
      {
           for(j=0; j<10; j++)
           {
                cout<<m[i][j]<<'\t';
           }
           cout<<endl;
      }
      return 0;
 }

пример 2.
Написати програм који креира и издаје јединичну матрицу A5×5.

#include<iostream>
 #include<cstdlib>
 using namespace std;
 int main()
 {
      int i,j;
      int a[5][5]={0};
      for (i=0;i<5;i++) a[i][i]=1;
      for (i=0;i<5;i++)
      {
           for(j=0;j<5;j++)
           {
                cout<<a[i][j]<<" ";
           }
           cout<<" "<<endl;
      }
      return 0;
 }

пример 3.
Направите програм који приказује на монитару рачунара

1*1*1 = 1       1*1*2 = 2       1*1*3 = 3       1*1*4 = 4       1*1*5 = 5
1*2*1 = 2       1*2*2 = 4       1*2*3 = 6       1*2*4 = 8       1*2*5 = 10
1*3*1 = 3       1*3*2 = 6       1*3*3 = 9       1*3*4 = 12      1*3*5 = 15
1*4*1 = 4       1*4*2 = 8       1*4*3 = 12      1*4*4 = 16      1*4*5 = 20
1*5*1 = 5       1*5*2 = 10      1*5*3 = 15      1*5*4 = 20      1*5*5 = 25
- – - – - – - – - – - – - – -
2*1*1 = 2       2*1*2 = 4       2*1*3 = 6       2*1*4 = 8       2*1*5 = 10
2*2*1 = 4       2*2*2 = 8       2*2*3 = 12      2*2*4 = 16      2*2*5 = 20
2*3*1 = 6       2*3*2 = 12      2*3*3 = 18      2*3*4 = 24      2*3*5 = 30
2*4*1 = 8       2*4*2 = 16      2*4*3 = 24      2*4*4 = 32      2*4*5 = 40
2*5*1 = 10      2*5*2 = 20      2*5*3 = 30      2*5*4 = 40      2*5*5 = 50
- – - – - – - – - – - – - – -
3*1*1 = 3       3*1*2 = 6       3*1*3 = 9       3*1*4 = 12      3*1*5 = 15
3*2*1 = 6       3*2*2 = 12      3*2*3 = 18      3*2*4 = 24      3*2*5 = 30
3*3*1 = 9       3*3*2 = 18      3*3*3 = 27      3*3*4 = 36      3*3*5 = 45
3*4*1 = 12      3*4*2 = 24      3*4*3 = 36      3*4*4 = 48      3*4*5 = 60
3*5*1 = 15      3*5*2 = 30      3*5*3 = 45      3*5*4 = 60      3*5*5 = 75
- – - – - – - – - – - – - – -
4*1*1 = 4       4*1*2 = 8       4*1*3 = 12      4*1*4 = 16      4*1*5 = 20
4*2*1 = 8       4*2*2 = 16      4*2*3 = 24      4*2*4 = 32      4*2*5 = 40
4*3*1 = 12      4*3*2 = 24      4*3*3 = 36      4*3*4 = 48      4*3*5 = 60
4*4*1 = 16      4*4*2 = 32      4*4*3 = 48      4*4*4 = 64      4*4*5 = 80
4*5*1 = 20      4*5*2 = 40      4*5*3 = 60      4*5*4 = 80      4*5*5 = 100
- – - – - – - – - – - – - – -

решење:

 #include <iostream>
 using namespace std;
 int main()
 {
      int t[5][6][6] = {0};int i,j,k;
      for(i=1; i<=4; i++)
      {
           for(j=1; j<=5; j++)
           {
                for(k=1; k<=5; k++)
                {
                     t[i][j][k]=i*j*k;
                     cout<<i<<"*"<<j<<"*"<<k;
                     cout<<" = "<<t[i][j][k]<<"\t";
                }
                cout<<endl;
           }
           cout<<"- - - - - - - - - - - - - - -"<<endl;
      }
      return 0;
 }

делови текста, као и примери преузети са: Višedimenzionalne matrice

Advertisements

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се / Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се / Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се / Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се / Промени )

Повезивање са %s