آرایه دو بعدی در C++

آموزش برنامه نویسی C++

آرایه دو بعدی یا ماتریسها در زبان C++  و C

ساختار آرایه های دو بعدی در زبان c++ و  c بصورت زیر تعریف میشوند:

;[ستون][سطر] نام آرایه  نوع آرایه

برای درک بهتر مفاهیم آرایه دو بعدی و ماتریس در زبان سی و c++ سورس برنامه ماتریس جمع ضرب و ترانهاده را ارائه میدهیم.

سورس کد برنامه جمع دو ماتریس ( ماتریسها ) در زبان سی c و c++

برنامه ای که دو ماتریس 10*12 را دریافت و حاصل جمع شان را محاسبه و چاپ می کند؟


void main()
{
int a[10][12] , b[10[12] ,i , j, c[10[12] = {0} ;
for ( i=0 ; i<10 ; i++ )
   for ( j=0 ; j<12 ; j++ )
   {
      cin >> a[i][j] >> b[i][j];
      c[i][j] = a[i][j] + b[i][j];
   }
for ( i=0 ; i<10 ; i++ )
{
   for ( j=0 ; j<12 ; j++ )
      cout << "\t" << c [i][j];
   cout << endl;
}
}

نکته:

دستور endl به معنی end line کرسور را به پایان خط و سر خط بعدی منتقل میکند.

نکته:

دستور “t\” به اندازه یک تب کرسور را به جلو منتقل میکند.

این دستورات برای مرتب سازی ورودی و خروجی مورد استفاده قرار میگیرند.

سورس کد برنامه ترانهاده ماتریس به زبان C و سی پلاس پلاس

برنامه ای که ماتریس 8*8 را دریافت کند و ترانهاده آن را بدون استفاده از ماتریس کمکی چاپ کند.


void main ()
{
int a[8][8] , i , j;
for (i=0 ; i<8 ; i++)
   for (j=0 ; j<8 ; j++)
      cin >> a[i][j];
for ( i=0 ; i<8 ; i++)
   for ( j=0 ; j<i ; j++)
   {
      t=[a[i][j];
      a[i][j] = a[j][i];
      a[j][i] = t;
   }
}

سورس کد برنامه ضرب دو ماتریس به زبان سی c++

برنامه ای که یک ماتریس 5*8 و یک ماتریس 7*8 را گرفته و ضربشان را محاسبه کند:


void main ()
{
int a[5][8], b[8][7], c[5][7] = {0} , i , j , k , t ;
for (i=0 ; i<5; i++)
  for (j=0 ; j<8 ; j++)
   cin >> a[i][j];
for (i=0 ; i<8; i++)
  for (j=0 ; j<7 ; j++)
    cin >> b[i][j];
for ( i=0 ; i<5 ; i++)
   for ( j=0 ; j<7 ; j++)
      for( k=0; k<8 ; k++)
         c[i][j] + = a[i][k] * b[k][j];
}

در مثال حاصل ضرب دو ماتریس ماتریس c خروجی و حاصل ضرب آنها میباشد که میتئان آنرا در خروجی پس از پایان چاپ نمود.

سورس کد برنامه عنصر زین اسبی

برنامه ای که یک ماتریس 10*12 را گرفته و عناصر زین اسبی آنرا چاپ کند؟

(عنصر زین اسبی عنصری است که در سطر خود کمترین مقدار و در ستون مربوطه بیشترین مقدار را داشته باشد)


void main ()
{
int a[10][12] , i , j , min , p[10];
for (i=0 ; i<10; i++)
  for (j=0 ; j<12 ; j++)
    cin >> a[i][j]; 
for ( i=0 ; i<10 ; i++)
{
   min = a[i][0];
   for ( j=0 ; j<12 ; j++)
      if( a[i][j] < min )
      {
         min = a[i][j];
         p[i] = j;
      }
}
for ( i=0 ; i<10 ; i++
{
   s=1;
   for( j=0 ; j<10 && s ; j++)
      if( a[j][p[i]] > a[i][p[i]] ) s=0;
   if ( s==1) cout << a[i][p[i]];
}
}

در برنامه بالا عنصر زین اسبی سطر به سط چاپ می گردد.