نمایش نتایج 1 تا 5 از 5

نام تاپیک: محاسبه دترمینان ماتریس در سی

  1. #1

    محاسبه دترمینان ماتریس در سی

    سلام
    یه تابع ساده برای
    دترمینان یه ماتریس مثلآ ماتریس 10 در 10 رو کسی میتونه بهم کمک کنه ؟

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1385
    پست
    55
    در C++‎ می تونم کمکت کنم

  3. #3

    #include <stdlib.h>
    #include <alloc.h>
    #include <stdio.h>

    int detmat ( int *arr, int order );

    void main( )
    {
    int *arr, sum, n, i, j, pos, num ;

    printf ( "\nEnter value of n for ( n x n ) matrix " ) ;
    scanf ( "%d", &n ) ;
    /* allocate memory to accomodate the determinant */
    arr = calloc (n * n,2) ;

    printf ( "\nEnter numbers :\n" ) ;
    for ( i = 0 ; i < n ; i++ )
    {
    for ( j = 0 ; j < n ; j++ )
    {
    scanf ( "%d", &num ) ;
    pos = i * n + j ;
    arr[pos] = num ;
    }
    }

    sum = detmat ( arr, n ) ;
    free ( arr ) ;

    printf ( "\n%d", sum ) ;
    }

    int detmat ( int *arr, int order )
    {
    int sign = 1, sum = 0, i, j, k, count, *arr2 ;
    int newsize, newpos, pos ;

    if ( order == 1 )
    return ( arr[0] ) ;

    for ( i = 0 ; i < order ; i++, sign *= -1 )
    {
    /* copy n-1 by n-1 array into another array */
    newsize = ( order - 1 ) * ( order - 1 ) ;
    arr2 = calloc (newsize,2) ;
    for ( j = 1 ; j < order ; j++ )
    {
    for ( k = 0, count = 0 ; k < order ; k++ )
    {
    if ( k == i )
    continue ;

    pos = j * order + k ;
    newpos = ( j - 1 ) * ( order - 1 ) + count ;

    arr2[newpos] = arr[pos] ;
    count++ ;
    }
    }

    /* find determinant value of n-1 by n-1 array and add it to sum */
    sum = sum + arr[i] * sign * detmat ( arr2, order - 1 ) ;
    free ( arr2 ) ;
    }
    return ( sum ) ;
    }


  4. #4
    کاربر دائمی آواتار powerboy2988
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    سن
    37
    پست
    1,301

    #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)
    }

    }

  5. #5

    نقل قول: محاسبه دترمینان ماتریس در سی

    نقل قول نوشته شده توسط powerboy2988 مشاهده تاپیک

    #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)
    }

    }

    توی قسمت تابع چرا هیچ اسمی برای متغیرهاش در نظر نگرفتی؟؟
    اصلا ar کجا معرفی شده که داره ازش استفاده میشه؟؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •