در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
ماتریس دارای دو بعد است، بعد اول را سطر و بعد دوم را ستون مینامند.
پس برای پیادهسازی یک ماتریس در کامپیوتر نیاز به یک آرایه دو بعدی داریم (این نکته را نیز باید ذکر کرد که الزاما نیازی به آرایه دو بعدی نیست و میشود بدون آرایه دو بعدی نیز ماتریس را پیاده کرد ولی استفاده از آرایه دو بعدی سادهترین روش است). حال فرض میکنیم دادههای ماتریس ما همگی اعداد صحیح هستند، پس تعریف ماتریس بهصورت زیر خواهد بود:
#define COL 3
#define ROW 4
int matrix1[ROW,COL];
int matrix2[ROW,COL];
مقدار COL و ROW تعداد سطرها و ستونهای یک ماتریس را مشخص میکنند. همانطور که گفته شد برای اینکه بتوان دو ماتریس را در هم ضرب کرد، باید ROW با COL برابر باشد، سپس درایههای ماتریس اولی را نظیربهنظیر با درایههای ماتریس دوم جمع میکنیم. اینکار را با دو حلقه میتوان به سادگی انجام داد:
for(int row=0; row«ROW; row++)
for(int col=0; col«COL ; col++)
matrix1[row][col]+=matrix2[row][col]
;بسیار خب، حال بهسادگی میتوانید دو ماتریس را باهم جمع کنید. محاسبه ضرب دو ماتریس یک مقدار نسبت به جمع دو ماتریس سختتر است، فقط در هنگام ضرب دو ماتریس شرطی رابطه بین ستونها و سطرهای دو ماتریس باید لحاظ شود. برای اینکه برای ضرب نیز به دو آرایه دو بعدی نیاز است، پس ما کماکان باید از همان دو حلقه تودرتو که در بالا نوشتیم استفاده کنیم.

پیش از نوشتن کد به این سوال از طریق ریاضی پاسخ میدهیم: «دو ماتریس چگونه در هم ضرب میشوند؟»
وقتی دو ماتریس در هم ضرب میشوند، عناصر اولین سطر (ستون) ماتریس اول در عناصر اولین ستون (سطر) ماتریس دوم، نظیربهنظیر ضرب میشوند و حاصلجمع آنها در اولین عنصر از اولین سطر(ستون) قرار میگیرد.
بهطور کلی اگر درایههای سطر(ستون) iم ماتریسی در درایههای ستون(سطر) ماتریسی نظیربهنظیر ضرب شوند، حاصل در عنصری از ماتریس حاصل قرار میگیرد که سطر(ستون) آن برابر i باشد و ستون(سطر) آن برابر j باشد. خوب حال این مطالبی که گفته شد را با یک زبان برنامهنویسی پیاده میکنیم:
for(int row=0; row«ROW; row++)
for(int col=0; col«COL; col++)
for(int temp=0; temp«ROW; temp++)
resMul[row][col]+=
matrix1[row][temp]*matrix2[temp][col];
بسیار خب، این قطعه برنامه دو ماتریس را در هم ضرب میکند. اگر شما از زبانهای شیءگرا استفاده میکنید برخی از این زبانها از operator overloading (بازنویسی عملگرها) پشتیبانی میکنند. بهطور مثال #C و ++C از operator overloading (بازنویسی عملگرها) پشتیبانی میکنند و شما با استفاده از قوانین شیءگرایی میتوانید اطلاعات یک ماتریس را در یک کلاس کپسولهسازی کنید و برای آن عملگرهای جمع و ضرب را بازنویسی کنید و بهسادگی اشیا ساخته شده ازکلاس ماتریس را در هم جمع و ضرب کنید.
بطور مثال:
Matrix mx1(2,3);
mx1.Read();
Matrix mx2(3,4);
mx2.Read();
mx1 += mx2;
mx1.Print();
برای خواندن و نوشتن یک ماتریس روشهای مختلفی هست که سلیقهای است. در زیر یکی از این روشها را بهصورت کد مینویسیم:
for(int row=0; row«ROW; row++){
for(int col=0; col«COL; col++){
std::cout «« matrix1[row][col] «« «\t»; }
std::cout «« std::endl;
}
نوشتن کد مربوط به گرفتن ماتریس از ورودی، بر عهده خواننده قرار داده شده است.
امیربهاءالدین سبطالشیخ
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: