PDA

View Full Version : دترمینان



دیانا
شنبه 07 خرداد 1384, 14:53 عصر
سلام عزیزان

من برنامه دترمینان n*n رو میخواستم

مرسی

omid_Ahmadi
شنبه 07 خرداد 1384, 20:30 عصر
به صورت بازگشتی یا تابع معمولی؟

ehsan.pn2
یک شنبه 08 خرداد 1384, 00:32 صبح
اگه با استفاره از توابع معمولی باشه میتونی رو کمک من هم حساب کنی :موفق: :flower:

مهدی
یک شنبه 08 خرداد 1384, 16:07 عصر
int deter(int x[10][10],int n)
{
if(n==1)return(x[0][0]);
int inmatrix[10][10];
int row1,col1,col2,d,sign=1,sum=0;
for(d=0;d<n;d++){
//extracting an internal matrix without row(0) and col(d)
for(row1=1;row1<n;row1++) //row counter
for(col1=0,col2=0;col1<n;col1++) //col counter
if(col1!=d) {
inmatrix[row1-1][col2] = x[row1][col1];
col2++; //counter for internal matrix col
}

sum+=sign*x[0][d]*deter(inmatrix,n-1);
sign*=(-1);
}
return sum;
}
البته این برای حداکثر 10*10 هست. اگر میخوای محدودیت نداشته باشه باید بجای تعریف آرایه با new یا malloc حافظه بگیری. خیلی فرقی نداره اما چون حوصله دوباره نوشتن ندارم خودت درستش کن :موفق:

دیانا
سه شنبه 10 خرداد 1384, 18:09 عصر
:sad2:
merci

مهدی
سه شنبه 10 خرداد 1384, 19:43 عصر
:sad2: خواهش میکنم!!!

ehsan.pn2
شنبه 28 خرداد 1384, 11:37 صبح
:flower: :تشویق: :flower:
::نوشتن:: مرسی

powerboy2988
دوشنبه 29 آبان 1385, 20:10 عصر
#include <stdio.h>
#include <conio.h>
#include <math.h>

#define N 4
#define FALSE 0

void main(void)
{
long determination(int [N][N],int,int);
int array_1[N][N],i,j;
clrscr();
for(i=0;i<N;i++)
for(j=0;j<N;i++)
{
printf("enter A[%u][%u]:\0",i,j)
scanf("%d",&array_1[i][j]);
}
printf("determination of A is =%d\n\0",detemination(array_1,N,N));
}

long determination(int [N][N],int,int)
{
int i,j,ii,jj,i_i,j_j;
int tar[N][N],a1,a2,a3,a4;
long s=0;
if(m!==n)
return 0;
if(m==2)
{
a1=*(*(ar+0)+0);
a4=*(*(ar+1)+1);
a2=*(*(ar+0)+1);
a3=*(*(ar+1)+0);
retrun(a1*a4-a2*a3)
}
else
{
for(i=0;i<m;i++)
for(j=0;j<n;j++)
tar[i][j]=*(*(ar+i)+j)
for(j=0;j<n;j++)
{
i_i=j_j=0;
for(ii=1;ii<m;ii++)
{
for(jj=1;jj<n;jj++)
if(jj!==j)
{
*(*(ar+i_i)+j_j=tar[ii][jj];
j_j++;
}
i_i++;
j_j=0;
}
s+=((j+1)%2==0)?-1:+1)*tar[0][j]*determination(ar,m-1,n-1);
}
retrun(s)
}

}