ورود

View Full Version : حل مشکل برنامه دترمینان ماتریس n*n



kamal70
سه شنبه 24 اسفند 1389, 15:33 عصر
سلام
من برنامه ای برای دترمینان ماتریس n*nنوشتم فقط نمی دانم چرابرایnهای بزرگتراز2،بعدازگرفتن عناصرماتریس برنامه اخطارمی دهدوچیزی چاپ نمی کندمی خواستم شمابرنامه رااجرا کنیدو دلیل اشکال آن رابگویید؟
باتشکر

#include<iostream>
#include<conio>
#include<math>
int det(int n,int w,int a[][20]);
int main(){
int i,j,n,w=1,a[20][20];
cout<<"enter n for matrix n*n\n";
cin>>n;
cout<<"enter elements matrix\n";
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
cout<<"determinant: "<<det(n,w,a);
getch();
}

int det(int n,int w,int a[][20])
{
int i,j,k=0,l,b[20][20],f;
if(n==2)
f=(a[1][1]*a[2][2]-a[2][1]*a[1][2]);
else
{
f=0;
for(w=1;w<=n;w++)
{
for(i=2;i<=n;i++)
{
l=0;
k++;
for(j=1;j<=n;j++)
{
if(j==w)
continue;
l++;
b[k][l]=a[i][j];
}
}
f+=(int)(a[1][w]*pow(-1,(1+w))*det(k,w,b));
}
}
return f;
}

kamal70
چهارشنبه 25 اسفند 1389, 07:27 صبح
لطفا جواب این تاپیک را بدهید!!:ناراحت:

ali7100
چهارشنبه 25 اسفند 1389, 13:54 عصر
سلام
یک k=0بعد از for(w=1;w<=n;w++)بگذار

artan0044
دوشنبه 01 فروردین 1390, 23:15 عصر
سلام لطفا برنامه بالا رو کامل بنویسید .با ماتریس M*N
با تشکر

cppKoder
پنج شنبه 04 فروردین 1390, 09:45 صبح
//in the name of God
//Coded by Mostafa Chelik
#include <conio.h>
#include <math.h>
#include <iostream.h>
int determinan(int**,int);
int main()
{
cout<<"Enter the matrix's row or column: ";
int n,i;
cin>>n;
int **a = new int*[n];
for(i=0;i<n;i++)
a[i]=new int[n];
for(i=0;i<n;i++)
for(int j=0;j<n;j++)
{
cout<<"Enter row "<<(i+1)<<" and column "<<(j+1)<<" : ";
cin>>a[i][j];
}
int determinan(int**,int);
cout<<"\n--------------------------------------------------------------------------------The matrix's determinan is: "<<determinan(&*a,n);
for(i=0;i<n;i++)
delete[] a[i];
delete[] a;
getch();
return 0;
}

int determinan(int **a,int n)
{ int i;
if(n==2)
return a[0][0]*a[1][1] - a[0][1]*a[1][0];
int result=0;
int **send = new int*[n-1];
for(int i=0;i<n-1;i++)
send[i]=new int[n-1];
bool cont=false;
for(i=0;i<n;i++)
{
for(int j=1;j<n;j++)
{
for(int k=0;k<n;k++)
{
if(k==i)
cont=true;
else
{
if(cont)
send[j-1][k-1]=a[j][k];
else
send[j-1][k]=a[j][k];
}
}
cont=false;
}
result+=a[0][i]*pow(-1,i)*determinan(&*send,n-1);
}
for(i=0;i<n-1;i++)
delete[] send[i];
delete[] send;
return result;
}


این کد خودمه که قبلا نوشته بودم. همینو استفاده کن بره :)