کمک در شرح کد برنامه معکوس ماتریکس

sepideh s

New Member
salam man 1 barname makos matrix gereftam ke dar morede estedlal barname chan ta eshkal daram ostademon gofte

estedlal barnamaro barash taip konim kasi mitone komakam kone
:neutral:age kasi mitone komakam kone bege barnamamo barash send konam mamnon misham
 

saalek110

Well-Known Member
نمیشه حالا برنامه ات را همین جا بذاری تا همه کمک کنند.
اگر نمیشه برای من بفرست شاید بتونم کمکی بکنم. البته برای دیگران هم بفرست چون من زیاد وارد نیستم.
 

sepideh s

New Member
salam

salam mojadad khahesh mikonam age kasi itone behem dar ord neveshatan estedlal 1 barname komak kone man in hafte mohlat akharame
:mad:
 

saalek110

Well-Known Member
من تابحال چنین برنامه ای ننوشتم. ولی در شرح کدها شاید بتوانم کمکی کنم.
 

dahdash

New Member
CODE]#include <iostream>
using namespace std;
int getn();
double **buildMatrix(int n);
void readMatrix(double **matrix,int n);
void writeMatrix(double **matrix,int n);
double determinant(double **m,int n);
double kahad(double **m1,int n,int i,int j);
double **varoon(double **matrix,int n);
int main()
{
double **matrix;
double **inv;
int n;
n=getn();
matrix=buildMatrix(n);
inv=buildMatrix(n);
readMatrix(matrix,n);
cout<<determinant(matrix,n)<<endl;
inv=varoon(matrix,n);
writeMatrix(inv,n);
return 0;
}

int getn()
{
int n;
cin>>n;
return n;
}

double **buildMatrix(int n)
{
double **matrix;
int i;
matrix=new double *[n];
for(i=0;i<n;i++)
matrix=new double[n];
return matrix;
}

void readMatrix(double **matrix,int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>matrix[j];
}

void writeMatrix(double **matrix,int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<matrix[j]<<" ";
cout<<endl;
}
}

double determinant(double **m,int n)
{
double det=0;
int i=0,j;
if(n==1)
return m[0][0];
for(j=0;j<n;j++)
det+=m[j]*kahad(m,n,i,j);
return det;
}

double kahad(double **m1,int n,int i,int j)
{
double **m2;
int counter1,counter2;
int sign=1;
for(int power=1;power<=j+i+2;power++)
sign*=-1;
m2=buildMatrix(n-1);
for(counter1=0;counter1<n;counter1++)
for(counter2=0;counter2<n;counter2++)
{
if(counter1<i && counter2<j)
m2[counter1][counter2]=m1[counter1][counter2];
else if(counter1>i && counter2<j)
m2[counter1-1][counter2]=m1[counter1][counter2];
else if(counter1<i && counter2>j)
m2[counter1][counter2-1]=m1[counter1][counter2];
else if(counter1>i && counter2>j)
m2[counter1-1][counter2-1]=m1[counter1][counter2];
}
return sign*determinant(m2,n-1);
}

double **varoon(double **matrix,int n)
{
double **result;
double det;
det=determinant(matrix,n);
result=buildMatrix(n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
result[j]= (kahad(matrix,n,i,j)/det);
return result;
}[/CODE

اینارو قبلنا نوشتم شاید به درد بخورن :neutral:
 

جدیدترین ارسال ها

بالا