آرایه دو بعدی یا ماتریسها در زبان 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]];
}
}
در برنامه بالا عنصر زین اسبی سطر به سط چاپ می گردد.