آموزش برنامه نویسی با c++ سی پلاس پلاس
متغیر استاتیک static تابع بازگشتی در c++
18 اردیبهشت 1400
دستگاه استندهوشمند اتوماتیک پارکینگ
مقایسه دستگاه دیسپنسر و ریسپانسر
22 اردیبهشت 1400
Show all

جمع ضرب ترانهاده دو ماتریس آرایه در 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\” یک تب اشاره گر را در خط جاری جلو می برد .

از دستورات بالا صرفا جهت مرتبسازی خروجی استفاده شده است .

برنامه ای بنویسید که یک ماتریس 8×8 را از ورودی دریافت کرده و بدون استفاده از ماتریس کمکی دیگری ترانهاده آن ماتریس را در زبان c++ محاسبه و در خروجی نمایش دهد ؟

برای درک بهتر مفهوم ریاضی ترانهاده ماتریس به تصویر زیر دقت کنید :

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

( ترانهاده یک ماتریس حاصل جابجایی سطرها و ستونها میباشد )

 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++ :

برنامه ای بنویسید که حاصل ضرب دو ماتریس نا متقارن 8×5 و 7×8 را از ورودی دریاف کند ، سپس حاصل ضرب دو ماتریس را در زبان c++ محاسبه و نمایش دهد ؟

برای درک مفهوم ریاضی ضرب دو ماتریس به تصویر زیر نگاه کنید :

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

پس از درج عنصر اول به همین ترتیب به شکل زیر سایر عناصر محاسبه و جایگذاری میشوند :

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

با توجه به توضیحات فوق سورس کد برنامه حاصلضرب دو ماتریس در زبان c++ بشکل زیر خواهد بود :

 

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];
}

 

برنامه ای بنویسید که ماتریس 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]];
}
}

 

 

فروش سیستم تشخیص پلاک آنلاین و راهبند پلاک خوان خودرو دلتا

شرکت مهندسی اندیشه تراشه ویرا

تلفن تماس : 09120613870-02176490358

 

 

مدیر کل سایت
مدیر کل سایت
برای رسیدن به هدفم میلیونها کیلیومتر اسکرول کردم و این راه همچنان ادامه دارد.

دیدگاهتان را بنویسید