Двумерни и многомерни масиви

  Двумереният масив може да бъде представен като таблица от определен брой редове и колони.
Например: декларирането int a[5][3] – означава, че декларираме двумерен масив от 5 реда и 3 колони с общо 5Х3=15 цели числа. Двумерен масив от 5 реда и 5 колони общо 25 целочислени числа декларираме по този начин: int a[5][5].
Тримерният масив int a[3][4][5] може да го представим, като начертани на три листа, по една таблица [4][5], от 4 реда и 5 колони. Или общо 3х4х5=60 елемента.
Многомерните масиви представляват масиви от масиви.

masiv


Пример 1 : Въвеждане и извеждане стойностите на двумерен масив.
#include <iostream> // for Code Blocks
#include <iomanip>
using namespace std;
int main()
{
int i,j,n=3;
double a[n][n];
for(i=0;i< n;i++)
{
for(j=0;j< n;j++)
{
cout<< "a["<< i<< ","<< j<< "]=";
cin >> a[i][j];
}
cout<< endl;
}
for(i=0;i< n;i++)
{
for(j=0;j< n;j++)
{
cout<< setw(4)<< "a["<< i<< ","<< j<< "]="<< a[i][j];
}
cout<< endl;
}
return 0;
}

Пример 2 : Въвеждане и извеждане стойностите на двумерен масив.
Примерно въвеждане: 3 реда с по 5 стойности разделени с интервал. В края на реда се натиска Enter.
N:1=>3 4 4 4 4
N:2=>4 4 5 5 5
N:3=>5 5 5 6 6

#include <iostream> // for Code Blocks
using namespace std;
int main()
{
int b=3,c=5;
double a[b][c];
int i,j;
int N[3]={1,2,3};
for(i=0;i< b;i++)
{
cout<< "N:"<< N[i]<< "=>";
for(j=0;j< c;j++)
cin >> a[i][j];
}
for(i=0;i< b;i++)
{
cout<< "N:"<< N[i]<< "=";
for(j=0;j< c;j++)
{
cout<< a[i][j]<< ", ";
}
cout<< endl;
}
return 0;
}
Пример 3 : Примерна таблица за извеждане на среден успех. Използва двумерен масив и масив от символи за съхраняване на имената.
Примерно въвеждане: 3 реда с по 5 стойности разделени с интервал. В края на реда се натиска Enter.
N:1 Alex =>3 3 3 3 4
N:2 Bily =>4 4 5 5 5
N:3 Rocky=>4 4 4 5 5

#include <iostream>// tested on Eclipse on Linux
#include <string.h>
#include <iomanip>
using namespace std;
int main()
{
int b=3,c=5;
double a[b][c],s;
int i,j;
string N[3]={"Alex ","Bily ","Rocky"};
for(i=0;i< b;i++)
{
cout<< "N:"<< i+1<< " "<< N[i]<< "=>";
for(j=0;j< c;j++)
cin >> a[i][j];
}
cout<< endl;
cout << " N:"<< setw(20)<< "BEL"<< setw(13)<< "MATH"<< setw(11)<< "INF"<< setw(14)<< "ENGLISH"<< setw(13)<< "HISTORY"<< setw(11)<< "Average"<< endl;
for(i=0;i< b;i++)
{
s=0;
cout<< i+1<< " "<< N[i]<< setw(15);
for(j=0;j< c;j++)
{
cout<< a[i][j]<< setw(12);
s=s+a[i][j];
}
cout<< s/c;
cout<< setw(0)<< endl;
}
return 0;
}

Пример 4 : Извеждане сумата на главният и второстепенния диагонали на квадратна матрица.

masiv

#include <iostream>// tested on Eclipse on Linux
using namespace std;
int main()
{
int n=4,s=0,s1=0;
double a[n][n];
int i,j;
int N[4]={1,2,3,4};
for(i=0;i< n;i++)
{
cout<< "N:"<< N[i]<< "=>";
for(j=0;j< n;j++)
cin >> a[i][j];
}
cout<< endl;
for(i=0;i< n;i++)
{
cout<< "N:"<< N[i]<< "=";
for(j=0;j< n;j++)
{
cout<< a[i][j]<< ",";
}
cout<< endl;
s=s+a[i][i];
s1=s1+a [i][n-i-1];
}
cout<< endl;
cout<< "Gl. Diagonal ===>"<< s<< endl;
cout<< "Vtori. Diagonal ===>"<< s1;
return 0;
}

     Пример 5 : Зареждаме двумерен масив a[10][10] със случайни числа от 0 до 10.
Изчислява сумата на главният и второстепенния диагонали на квадратна матрица.

#include<iostream> // for Code Blocks
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
  {
    int n=10,s=0,s1=0;
    double a[n][n],b[n],c[n];
    int i,j;
    srand(time (0));
    for(i=0;i< n;i++)
      for(j=0;j< n;j++)
        a[i][j]=rand()%11;
    for(i=0;i< n;i++)
      {
        for(j=0;j< n;j++)
          {
            cout<< a[i][j]<<",";
          }
      s=s+a[i][i];b[i]=a[i][i];
      s1=s1+a[i][n-i-1];c[i]=a[i][n-i-1];
      cout<< endl;
      }
    cout<< endl;
    for(i=0;i< n;i++)
      {
        cout<< b[i];
         if(i< n-1) cout<< "+";
      }
      cout<< "="<< s<< " ===> Gl. Diagonal";
      cout<< endl;
    for(i=0;i< n;i++)
      {
        cout<< c[i];
         if(i< n-1) cout<< "+";
      }
      cout<< "="<< s1<< " ===> Vtori. Diagonal";
      cout<< endl;
    return 0;
  }


Благодаря за вниманието Ви !