-
ماتریس اسپارس
بابا یکی کمکم کنه خیلی فوریه خواهشن
این برنامه من تو کامپایل ارور نمیده ولی موقع اجرا ارور میده مشکل کارم کجاست؟
[HTML]
#include<iostream.h>
#include<conio.h>
#include<string.h>
#define max 30
void main()
{
int a[max][max],b[max][max],c[max][max];
int i=0;
cout << "\n\n@ Lotfan Ettelaat Zir Ra Dar Mored Matrise Sparse Vared Konid : \n\n"
<< "$ enter n for matrix[n][n] [--> in matrix A , B] \nn : ";
int Row,Col,Terms,Row1,Col1,Terms1;
cin >> Row;
Col=Row1=Col1=Row;
do
{
cout << "$ Tedade Anasore Gheyre Sefr in matrix A : ";
cin >> Terms;
if( Terms > ( Row * Col ) || Terms < 0 )
cerr << "\nERROR ! ( In Tedad Ghabele Ghabool Nemibashad )\n\n";
}
while( Terms > ( Row * Col ) || Terms < 0 );
while( i < Terms )
{
cout << "\n# Lotfan Shomarehye Satr Va Sotoone Onsore "
<< ( i + 1 )
<< " -om Ra Vared Konid : ";
int r,c;
cin>>r>>c;
if( r > Row || c > Row || r < 1 || c < 1 )
cerr << "\nERROR ! ( In Jayegah Dar Moshakhkhasat Matris Nemigonjad )\n";
else
{
cout << "* Lotfan Meghdar Onsor Ra Vared Konid : ";
cout<<"\nmeghdaresh : ";
cin>>a[r][c];
i+=1;
}
cout<<"matrix A is :\n\n";
}
for(i=1;i<=Row;i++)
{
for(int j=1;j<=Col;j++)
{
if(a[i][j]!= 0)
cout<<a[i][j]<<" ";
else
{
a[i][j]=0;
cout<<a[i][j]<<" ";
}
}
cout<<"\n\n";
}
cout<<"\n\ntranspose matrix A is : \n";
for(int j=1;j<=Col;j++){
for(i=1;i<=Row;i++)
cout<<a[i][j]<<" ";
cout<<endl; }
do
{
cout << "\n\n$ Tedade Anasore Gheyre Sefr in matrix B : ";
cin >> Terms1;
if( Terms1 > ( Row1 * Col1 ) || Terms1 < 0 )
cerr << "\nERROR ! ( In Tedad Ghabele Ghabool Nemibashad )\n\n";
}
while( Terms1 > ( Row1 * Col1 ) || Terms1 < 0 );
i=0;
while( i < Terms1 )
{
cout << "\n# Lotfan Shomarehye Satr Va Sotoone Onsore "
<< ( i + 1 )
<< " -om Ra Vared Konid : ";
int r1,c1;
cin>>r1>>c1;
if( r1 > Row1 || c1 > Row1 || r1 < 1 || c1 < 1 )
cerr << "\nERROR ! ( In Jayegah Dar Moshakhkhasat Matris Nemigonjad )\n";
else
{
cout << "* Lotfan Meghdar Onsor Ra Vared Konid : ";
cout<<"\nmeghdaresh : ";
cin>>b[r1][c1];
i+=1;
}
cout<<"matrix B is : \n\n";
}
for(i=1;i<=Row1;i++)
{
for(int j=1;j<=Col1;j++)
{
if(b[i][j]!= 0)
cout<<b[i][j]<<" ";
else
{
b[i][j]=0;
cout<<b[i][j]<<" ";
}
}
cout<<"\n\n";
}
cout<<"\n\ntranspose matrix B is : \n";
for( j=1;j<=Col1;j++){
for(i=1;i<=Row1;i++)
cout<<b[i][j]<<" ";
cout<<endl;
}
cout<<"plus matrix A & B is :\n\n";
for(i=1;i<=Col;i++)
{
for(int j=1;j<=Col;j++)
{
c[i][j]=a[i][j]+b[i][j];
cout<<c[i][j]<<" ";
}
cout<<endl;
}
cout<<"multiplication matrix A & B is : \n\n";
int sum;
for(i=1;i<=Row;i++)
for(int j=1;j<=Row;j++)
{
sum=0;
for(int k=1;k<=Row;k++)
sum+=(a[i][k]*b[k][j]);
c[i][j]=sum;
}
for(i=1;i<=Col;i++)
{
for(int j=1;j<=Col;j++)
{
cout<<c[i][j]<<" ";
}
cout<<endl;
}
}
[/HTML]
-
دوست عزیز من این برنامه رو تو visual stadio 6.0 کامپایل و اجرا کردم error نداد یعنی برنامه اجرا شد و من تا همین وارد کردن اطلاعات جلو رفتم اما این برنامه شما رو فقط میشه واسه ماتریس های بسیار کوچیک استفاده کرد اگه باز مشکلی پیش اومد در مورد نحوه عملکرد و چگونگی پیاده سازیش یه توضیحی بده شاید بتونم کمکت کنم
در ضمن من خودم sparse matrix رو پیاده سازی کردم که با n=1000 یا بیشتر میشه ازش استفاده کرد
اگه خواستی بگو برات بذارم
-
سلام بابا برنامتو میزاشتی دیگه من تا 1 شنبه باید تحویل بدم
اینم ایمیلم
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
-
اين برنامه اي که برات فرستادم خود برنامه sparse matrix هست و يه بر نامه واسه توليد ماتريس که برنامه اصلي از رو فايل توليد شده توسط اين برنامه داده ها رو مي خونه
فقط يه تغيير کوچيک بايد تو فايل توليد شده بدي
وقتي ماتريس رو توليد کردي فايل توليد شده رو باز کن
ته فايل تعداد عناصر غير صفر نوشته شده
شما بايد اونو با فاصله تهش cut کرده به ابتداي فايل بياي و بعد از تعداد سطر و ستون ها copy کني تا قابل خوندن توسط برنامه اصلي باشه
براي نمونه اگر ماتريس توليد شده به شکل زير باشه
کد:
actrow:5 actcol:5
Terms: row:2 col:1 value:1 row:3 col:1 value:1 row:3 col:3 value:1 row:4 col:2 value:1
nonezeroterms:4
شما بايد اونو به صورت زير در بياري و تو جايي که برنامه اصليت هست فايل txt رو copy کني تا اونو بخونه
کد:
actrow:5 actcol:5 nonezeroterms:4
Terms: row:2 col:1 value:1 row:3 col:1 value:1 row:3 col:3 value:1 row:4 col:2 value:1
من اين برنامه رو واسه محاسبه زمان اجرا نوشتم که وقتي برنامه رو اجرا مي کني زمان اجرا ها رو نشون ميده
اگه مي خواي ماتريس رو چاپ کني من تو کلاس هايي که نوشتم تابع printmatrix رو هم نوشتم که ميتوني از اون براي چاپ ماتريست ازش استفاده کني
يه مقدار کد رو بخوني متوجه ميشي:3:
-