گروه نرم افزاری پرتو

پروژه های کاربردی

گروه نرم افزاری پرتو

پروژه های کاربردی

ماتریس استراسن

الگوریتم ماتریس استراسن 

 

برای دیدن برنامه روی ادامه ی مطلب کلیک کنید

Msmas.blogfa.com

 #include<stdio.h>

#include<conio.h>

#include<string.h>

void Sterasen(int A[8][8],int B[8][8],int n, int C[8][8]);

int cs=0,cm=0;

void main(){

 clrscr();

 int i,j,n,A[8][8],B[8][8],C[8][8];

 printf("Enter dimesion of Matrixs:");

 scanf("%d",&n);

 printf("Enter A Matrix:\n");

 for(i=0;i<n;i++){

            for(j=0;j<n;j++){

                                     printf("A[%d][%d]:",i,j);

                                     scanf("%d",&A[i][j]);

                                    }

            printf("\n");

                         }

 printf("Enter B Matrix:\n");

  for(i=0;i<n;i++){

            for(j=0;j<n;j++){

                                     printf("B[%d][%d]:",i,j);

                                     scanf("%d",&B[i][j]);

                                    }

            printf("\n");

                          }

  Sterasen(A,B,n,C);

  for(i=0;i<n;i++){

            for(j=0;j<n;j++){

                                     printf("A*B[%d][%d]:",i,j);

                                     printf("%d\n",C[i][j]);

                                    }

            printf("\n");

                          }

 printf("Count of Addition:%d\n",cs);

 printf("Count of Multiplication:%d\n",cm);

 getch();

 }

void Sterasen(int A[8][8],int B[8][8],int n,int C[8][8]){

 int i,j,k;

 int A1[8][8],A2[8][8],A3[8][8],A4[8][8],B1[8][8],B2[8][8],B3[8][8],B4[8][8];

 int M1[8][8],M2[8][8],M3[8][8],M4[8][8],M5[8][8],M6[8][8],M7[8][8];

 int R1[8][8],R2[8][8],R3[8][8],R4[8][8],T1[8][8],T2[8][8];

 if (n<=2){

              for(i=0;i<n;i++)

                 for(j=0;j<n;j++){

                                          cs++;

                                          for(k=0;k<n;k++){

                                                                   cm++;

                                                                   C[i][j]+=A[i][k]*B[k][j];

                                                                   }

                                          }

               }

 else{

      n=n/2;

      for(i=0;i<n;i++)

       for(j=0;j<n;j++){

                               A1[i][j]=A[i][j];

                               B1[i][j]=B[i][j];

                               }

      for(i=0;i<n;i++)

       for(j=0;j<n;j++){

                               A2[i][j]=A[i][j+n];

                               B2[i][j]=B[i][j+n];

                               }

      for(i=0;i<n;i++)

       for(j=0;j<n;j++){

                               A3[i][j]=A[i+n][j];

                               B3[i][j]=B[i+n][j];

                               }

      for(i=0;i<n;i++)

       for(j=0;j<n;j++){

                               A4[i][j]=A[i+n][j+n];

                               B3[i][j]=B[i+n][j+n];

                               }

      for(i=0;i<n;i++)

       for(j=0;j<n;j++){

                              T1[i][j]=A1[i][j]+A4[i][j];

                              T2[i][j]=B1[i][j]+B4[i][j];

                               }

                              cs=cs+2;

                              cm++;

                              Sterasen(T1,T2,n,M1);

      for(i=0;i<n;i++)

       for(j=0;j<n;j++)

                              T1[i][j]=A3[i][j]+A4[i][j];

                              cs++;

                              cm++;

                              Sterasen(T1,B1,n,M2);

      for(i=0;i<n;i++)

       for(j=0;j<n;j++)

                              T1[i][j]=B2[i][j]-B4[i][j];

                              cs++;

                              cm++;

                              Sterasen(A1,T1,n,M3);

      for(i=0;i<n;i++)

       for(j=0;j<n;j++)

                              T1[i][j]=B3[i][j]-B1[i][j];

                              cs++;

                              cm++;

                              Sterasen(A4,T1,n,M4);

      for(i=0;i<n;i++)

       for(j=0;j<n;j++)

                              T1[i][j]=A1[i][j]+A2[i][j];

                              cs++;

                              cm++;

                              Sterasen(T1,B4,n,M5);

      for(i=0;i<n;i++)

       for(j=0;j<n;j++){

                               T1[i][j]=A3[i][j]-A1[i][j];

                               T2[i][j]=B1[i][j]+B4[i][j];

                               }

                              cs=cs+2;

                              cm++;

                              Sterasen(T1,T2,n,M6);

     for(i=0;i<n;i++)

      for(j=0;j<n;j++){

                               T1[i][j]=A2[i][j]-A4[i][j];

                               T2[i][j]=B3[i][j]+B4[i][j];

                              }

                             cs=cs+2;

                             cm++;

                             Sterasen(T1,T2,n,M7);

     for(i=0;i<n;i++)

      for(j=0;j<n;j++){

                               R1[i][j]=M1[i][j]+M4[i][j]-M5[i][j]+M7[i][j];

                               R2[i][j]=M3[i][j]+M5[i][j];

                               R3[i][j]=M2[i][j]+M4[i][j];

                               R4[i][j]=M1[i][j]+M3[i][j]-M2[i][j]+M6[i][j];

                              }

     cs=cs+8;

     for(i=0;i<n;i++)

      for(j=0;j<n;j++)

                              C[i][j]=R1[i][j];

     for(i=0;i<n;i++)

      for(j=0;j<n;j++)

                              C[i][j+n]=R2[i][j];

     for(i=0;i<n;i++)

      for(j=0;j<n;j++)

                              C[i+n][j]=R3[i][j];

     for(i=0;i<n;i++)

      for(j=0;j<n;j++)

                              C[i+n][j+n]=R4[i][j];

     }

   }

نظرات 5 + ارسال نظر
[ بدون نام ] شنبه 5 اردیبهشت‌ماه سال 1388 ساعت 10:21 ب.ظ

خیلی آقایی دایی...

آدم فروش شنبه 12 اردیبهشت‌ماه سال 1388 ساعت 12:13 ب.ظ

کرتیم به مولا

s یکشنبه 27 اردیبهشت‌ماه سال 1388 ساعت 11:03 ب.ظ

خیلی عالیه ممنون از بزرگیتون
استفاده شد فراوون

آدم فروش جمعه 1 خرداد‌ماه سال 1388 ساعت 03:53 ب.ظ

ممنون از لطفتون سامان جان قابل شما رو نداشت.

فرهاد چهارشنبه 20 خرداد‌ماه سال 1388 ساعت 07:47 ب.ظ

دایی مرسی دمت گرم خدا خیرت بده

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد