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

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

  1. #1

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

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

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

  3. #3
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    #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
    محل زندگی
    تهران
    سن
    38
    پست
    1,301
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #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 مشاهده تاپیک
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #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 کجا معرفی شده که داره ازش استفاده میشه؟؟

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

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