PDA

نسخه کامل مشاهده نسخه کامل : کمک!!!!!!1



yas92
04-10-2013, 12:05
سلام.
اگه میشه یه نفر به من کمک کنه!!!!!!
من یه الگوریتم (الگوریتم ترانهاده ی ماتریس خلوت )دارم که نمی دونم دقیقا چه طور کار می کنه.اگه کسی متوجهش میشه لطفا برای منم توضیح بده!
متشکر[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
SpMtx SpMtx::Transpose()
{
SpMtx b;
b.Rows = Cols;
b.Cols = Rows;
b.Terms = Terms;
if(Terms<=0)
return b;
int CurB=0;
for(int c=0 ; c<Cols ; c++)
for(int i=0 ; i<Terms ; i++)
if(smArr[i].Col == c)
{
b.smArr[CurB].row=c;
b.smArr[CurB].col=smArr[i].row;
b.smArr[CurB].value=smArr[i].value;
CurB++;
}
return b;

}

rahnema1
04-10-2013, 23:53
اولا بعنوان یاد آوری ماتریس خلوت به صورت لیستی مرتب از عناصری اکه هر عنصر آن سه خصوصیت شامل سطر و ستون و مقدار پیاده سازی می شه و ترتیبش هم سطر به سطره که توضیح می دهم
می دو نیم کار ترانسپوز عوض کردن جای سطر و ستونه بعنوان اولین راه حل به نظر میاد که یک حلقه بگذاریم و جای سطر و ستون عناصر را عوض کنیم اما نکته ای که خیلی مهمه ترتیب عناصر است
اینجور که از توی این کد مشخصه اعضای ماتریس خلوت ترتیبشون از سطر بالا به پایین است یعنی برای تشکیل یک ماتریس خلوت ابتدا از گوشه سمت چپ و بالای ماتریس شروع می کنیم و به سمت راست می رویم و عناصر غیر صفر را به صورت یک لیست پشت سر هم قرار می دهیم تا سطر اول تموم بشه سپس به ترتیب به سطرهای بعدی می رویم
حالا توی کد دقت کنید
cols که تعدا ستون ها است و terms هم تعداد اعضایی است که در لیست ماتریس خلوت قرار دارند و row و col هم سطر و ستون مورد نظر است
for(int c=0 ; c<Cols ; c++)
for(int i=0 ; i<Terms ; i++)
بعلت اینکه قراره هنگام ترانسپوز جای سطر و ستون عوض بشه در نتیجه ترتیب اعضای لیست هم به جای اینکه مثل حالت قبل سطر به سطر باشه الان ستون به ستون میشه یعنی از گوشه بالا سمت چپ شروع می کنیم می آییم پایین تا ستون اول تموم بشه و در همین حین در بین لیست نگاه می کنیم و به ترتیب ، اعضایی که عضو آن ستون باشند رو توی لیست جدید پشت سر هم قرار می دهیم
البته نگران این نباش چه طور اعضایی که عضو یک ستون هستند خود به خود به ترتیب پشت سر هم قرار می گیرند علتش اینه که در حالتی کاه ماتریس ترانسپوز نبود برای ترتیب اعضا سطر به سطر از بالا به پایین می رفتیم در نتیجه الان که داریم عناصر لیست را بررسی می کنیم اعضای یک ستون خودبخود پشت سر هم هستند .
و به همین ترتیب به ستون های بعدی می ریم تا تمام اعضای لیست پشت سر هم قرار بگیرند و در عین حال سطر و ستون آنها را هم تغییر می دهیم

yas92
05-10-2013, 21:45
برنامه از کجا متوجه میشه که باید به صورت ستونی حرکت کنه.نه سطری؟!!!!!

rahnema1
06-10-2013, 04:34
توضیحات برنامه رو با شکل گذاشتم فکر کنم جالب باشه
قسمت اول
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

ادامه داستان

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

yas92
06-10-2013, 22:40
خیلی خیلی ممنون.