PDA

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



babak1286
یک شنبه 15 دی 1392, 11:27 صبح
من این برنامرو تا اینجا رفتم برایه تبدیل ماتریس ورودیم به ماتریس اسپارس به مشکل خوردم لطفا راهنماییم کنبد.






#include <iostream.h>
#include <conio.h>
//*************************tab-e ha
void meno(void);
void print2darray();
void add_matrix1();
void add_matrix2();
void taghir();
//*************************moteghayer ha
int c,b;
int chose,count=0 ;
int arr1[10][10],arr2[10][10];
int sarr1[50][3],sarr2[50][3];
//**********************************
int main()
{
meno();
while(1)
switch(chose)
{
case 1 : add_matrix1(); break;
case 2 : add_matrix2(); break;
case 3 : print2darray(); break;
case 4 : taghir(); break;
//case 5 : addContact(); break;
//case 6 : addContact(); break;
case 0 : meno();

}




return 0;
}

//*******************************************
void meno()
{
clrscr();
cout<<"---------------------"<<"\n";
cout<<"| 1)add matrix 1: |"<<"\n";
cout<<"| 2)add matrix 2: |"<<"\n";
cout<<"| 3)chap: |"<<"\n";
cout<<"| 4)taghir: |"<<"\n";
cout<<"| 5)zarb matrix: |"<<"\n";
cout<<"| 6)taghsim matrix: |"<<"\n";
cout<<"| 7)jam matrix: |"<<"\n";
cout<<"| 8)tafrigh matrix: |"<<"\n";
cout<<"---------------------"<<"\n";
cout<<"entekhab khodra vared konid: ";
cin>>chose;




}
//*********************************************+
void add_matrix1()
{
clrscr();
cout<<"tedad satr ra vared konid:";
cin>>c;
cout<<"tedad soton ra vared konid:";
cin>>b;
clrscr();
cout<<c<<"satr"<<"\n";
cout<<b<<"soton"<<"\n";
for(int i3=0;i3<c;i3++)
{
for(int j3=0;j3<b;j3++)
{
cout<<"enter arr1["<<i3<<"]["<<j3<<"]";
cin>>arr1[j3][i3];
}
}

meno();
}
//*******************************************
void add_matrix2()
{
clrscr();
cout<<"tedad satr ra vared konid:";
cin>>c;
cout<<"tedad soton ra vared konid:";
cin>>b;
clrscr();
cout<<c<<"satr"<<"\n";
cout<<b<<"soton"<<"\n";
for(int i3=0;i3<c;i3++)
{
for(int j3=0;j3<b;j3++)
{
cout<<"enter arr2["<<i3<<"]["<<j3<<"]";
cin>>arr2[j3][i3];
}
}

meno();
}
//*********************************************
void taghir()
{
int count=0,i=1,j=0;
int i3 , j3;
for( i3=0;i3<c;i3++)
{
for( j3=0;j3<b;j3++)
{
if(arr1[j3][i3]!=0)
count++;
}
}
sarr1[0][0]=count;
sarr1[1][1]=5;
sarr1[2][2]=56;
for( i3=0;i3<c;i3++)
{
for( j3=0;j3<b;j3++)
{
if(arr1[j3][i3]!=0){
sarr1[1][i]=i3;
sarr1[2][i]=j3;
sarr1[3][i]=arr1[j3][i3];
i++;
}
}
}
print2darray();
}
//*******************************************
void print2darray()
{
clrscr();
int i3,j3;
if(arr1[0][0]!=NULL){
cout<<"matrix1 "<<"\n";
for(i3=0;i3<c;i3++)
{

for(j3=0;j3<b;j3++)
{
cout<<arr1[j3][i3]<<"\t";
}

cout<<"\n";
}
cout<<"\n\n\n\n\n";
}
else
cout<<"matrix1 khali ast"<<"\n";

if(arr2[0][0]!=NULL){
cout<<"matrix2 "<<"\n";
for(i3=0;i3<c;i3++)
{

for(j3=0;j3<b;j3++)
{
cout<<arr2[j3][i3]<<"\t";
}
cout<<"\n";
}
}
else
cout<<"matrix2 khali ast"<<"\n";
cout<<count;
if(sarr1[0][0]!=NULL){
cout<<"matrix3 "<<"\n";

for(i3=0;i3<count;i3++)
{

for(j3=0;j3<3;j3++)
{
cout<<sarr1[j3][i3]<<"\t";
}
cout<<"\n";
}
}
else
cout<<"matrix3 khali ast"<<"\n";
cout<<"baraye khoroj kelidi befesharid :::"<<"\n";
getch();
meno();
}

Behnam.B
یک شنبه 15 دی 1392, 14:57 عصر
سلام، توی تابع تغییر، یه تغییراتی لازم داره:
1- شمارنده i از 0 شروع میشه
2- موقع مقدار دهی sarr1 مولفه اول و دوم جا به جا بود
3-اول تابع یه چند خطی اضافیه!

اگه به این شکل بنویسی:

void taghir(){
int i = 0;
int i3, j3;

for (i3 = 0; i3<c; i3++){
for (j3 = 0; j3<b; j3++){
if (arr1[j3][i3] != 0){
sarr1[i][0] = i3;
sarr1[i][1] = j3;
sarr1[i][2] = arr1[j3][i3];
i++;
}
}
}
count = i;

print2darray();
}

حالا میتونی داخل تابع چاپ، شرط if واسه ماتریس سوم رو به این شکل تغییر بدی:
if (count > 0){
//...

بهتر بود یه توضیح در مورد کدت میدادی :چشمک:

babak1286
دوشنبه 16 دی 1392, 02:00 صبح
من هر کاری تونستم کردم ولی نمیدونم چرا موقع چاپش به مشکل می خورم هیچ کدوم از عددا سره جایه خودشون نیستن؟؟؟؟؟؟؟؟
میشه یه کمکی بکنی ؟؟؟؟؟
مرسی...

Behnam.B
دوشنبه 16 دی 1392, 10:31 صبح
موقع چاپ هم مولفه های اول و دوم آرایه رو جا به جا نوشتی:اشتباه:

arminloty
دوشنبه 22 اردیبهشت 1393, 16:41 عصر
ببخشید دوست عزیز میشه برنامه ای که در انتها جواب داد رو بنویسی و یه توضیح هم در موردش بدی
خیلی ممنون میشم این کارو بکنی

rahnema1
دوشنبه 22 اردیبهشت 1393, 21:49 عصر
سلام
این یک توضیح در مورد ماتریس خلوت امیدوارم مفید باشه
http://upload7.ir/imgs/2014-05/42841869127365120649_thumb.png (http://upload7.ir/viewer.php?file=42841869127365120649.png)