PDA

View Full Version : تبدیل ماتریس اسپارس به ماتریس معمولی



mr.biqarar
چهارشنبه 06 آبان 1394, 11:55 صبح
سلام دوستان ببخشید یه برنامه نوشتم با c++ که ماتریس معمولی رو تبدیل به اسپارس میکنه ، کسی میدونه برعکس این چطوره ؟ که ماتریس اسپارس رو تبدیل به معمولی بکنه؟
اینم کد برنامه که نوشتم :
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int s1[3][3];
int i,j,k=0;

for(i=0;i<3;i++)
{
cout<<"lotfan satr "<<(i+1)<<" ra vared knid";
for(j=0;j<3;j++)
{

cout<<"\ninter number "<<(j+1)<<" : ";
cin>>s1[i][j];
}
system("cls");
}
for(i=0;i<3;i++)
{

cout<<endl;
for(j=0;j<3;j++)
{
cout<<" "<<s1[i][j];
if(s1[i][j]!=0)
{
k++;
}

}
}
cout<<"\n\n\n\n";
cout<<"your matrix sparse\n";
cout<<"\n\t3 3 "<<k<<"\n\n";
for(i=0;i<3;i++)
{

for(j=0;j<3;j++)
{
if(s1[i][j]!=0)
{
cout<<"\t"<<i<<" "<<j<<" "<<s1[i][j];
cout<<endl;
}
}
}
getch();
return 0;
}

لطفا اگه کسی میتونه کمکم کنه

bigtime
جمعه 06 آذر 1394, 23:26 عصر
با سلام
برای اینکه یک ماتریس اسپارس رو به یک ماتریس عادی تبدیل کنید:
اول باید ابعاد ماتریس مقصد رو بدست بیارید. که با بدست آوردن بزرگترین عدد در ستون دوم به اندازه ی بعد سطری ماتریس مقصد و بزرگترین عدد در ستون سوم ماتریس اسپارس به اندازه ی بعد ستونی ماتریس هدف دست پیدا می کنیم.
بعد از این کافی هستش که یک بار ماتریس اسپارس رو به صورت سطری پیمایش کنیم و به جای عنصر آدرس داده شده در هر سطر اون عدد مورد نظر در اون سطر از ماتریس رو جایگذاری کنیم.

موفق باشید