Sie sind auf Seite 1von 5

visit-www.Codes2u.

com
#include<stdio.h>
#include<conio.h>
#define z 100
void main()
{
int A[100][100],B[100][100],C[100][100];
int i,j,k,p1,p2
;
int n;
clrscr();
printf("Enter The Order of Matrics");
scanf("%d",&n);
for(i=1;i<=n;i++)
{ for(j=1;j<=n;j++)
{
printf("\nEnter Value for a[%d][%d]= ",i,j);
scanf("%d",&A[i][j]);
printf("\nEnter Value for b[%d][%d]= ",i,j);
scanf("%d",&B[i][j]);
C[i][j]=0;
}
}
pmatrix(A,n);
pmatrix(B,n);
strassens(A,B,C,n);
}
strassens(int A[100][100],int B[100][100],int C[100][100], int n)
{ int i ,j,k;
int r[100][100],s[z][z],t[z][z],u[z][z],a[100][100],b[z][z];
int c[z][z],d[z][z],e[z][z],f[z][z],g[z][z],h[z][z];
int
p1[100][100],p2[100][100],p3[100][100],p4[100][100],p5[100][100],p6[100][100]
,p7[100][100];
int nn;
int t1[z][z],t2[z][z];
nn=n/2;
for ( i=1;i<=nn;i++)
{
for( j=1;j<=nn;j++)
{
a[i][j]=b[i][j]=c[i][j]=d[i][j]=e[i][j]=f[i][j]=g[i][j]=h[i][j]=0;
}}
printf("\nINside strassens\n");
pmatrix(A,n);
pmatrix(B,n);

pmatrix(C,n);
for ( i=1;i<=nn;i++)
{
for( j=1;j<=nn;j++)
{
a[i][j]=A[i][j];
b[i][j]=A[i][j+nn];
c[i][j]=A[i+nn][j];
d[i][j]=A[i+nn][j+nn];
e[i][j]=B[i][j];
f[i][j]=B[i][j+nn];
g[i][j]=B[i+nn][j];
h[i][j]=B[i+nn][j+nn];
}
}
pmatrix(a,nn);
pmatrix(b,nn);
pmatrix(c,nn);
pmatrix(d,nn);
pmatrix(e,nn);
pmatrix(f,nn);
pmatrix(g,nn);
pmatrix(h,nn);
pmatrix(C,n);
sub(f,h,t1,nn);
mul(a,t1,p1,nn );
pmatrix(p1,nn);
sum(a,b,t1,nn);
mul(t1,h,p2,nn);
pmatrix(p2,nn);
sum(c,d,t1,nn);
mul(t1,e,p3,nn);
pmatrix(p3,nn);
sub(g,e,t1,nn);
mul(d,t1,p4,nn);
pmatrix(p4,nn);
sum(a,d,t1,nn);
sum(e,h,t2,nn);
mul(t1,t2,p5,nn);
pmatrix(p5,nn);
sub(b,d,t1,nn);
sum(g,h,t2,nn);
mul(t1,t2,p6,nn);
pmatrix(p6,nn);

sub(a,c,t1,nn);
sum(e,f,t2,nn);
mul(t1,t2,p7,nn);
pmatrix(p7,nn);
printf("\nS:");
sum(p1,p2,s,nn);
pmatrix(s,nn);
printf("\nT:");
sum(p3,p4,t,nn);
pmatrix(t,nn);
printf("\nR:");
sum(p5,p4,t1,nn);
sub(t1,p2,t2,nn);
sum(t2,p6,r,nn);
pmatrix(r,nn);
printf("\nU:");
sum(p5,p1,t1,nn);
sub(t1,p3,t2,nn);
sub(t2,p7,u,nn);
pmatrix(u,nn);
for(i=1;i<=nn;i++)
{
for(j=1;j<=nn;j++)
{
printf("\n %d ",r[i][j]);
C[i][j]=r[i][j]; pmatrix(C,nn);
C[i][j+nn]=s[i][j];
C[i+nn][j]=t[i][j];
C[i+nn][j+nn]=u[i][j];
}
}
pmatrix(C,n);
getch();
}
mul(int a[100][100],int b[100][100], int c[100][100],int n)
{
int i, j ,k;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{

c[i][j]=0;
for(k=1;k<=n;k++)
{
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
}
}
}
}
sum(int a[100][100],int b[100][100], int c[100][100],int n)
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
}
sub(int a[100][100],int b[100][100],int c[100][100], int n)
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
c[i][j]=a[i][j]-b[i][j];
}
}
}
pmatrix(int a[100][100],int n)
{
int i,j;
printf("\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}

Das könnte Ihnen auch gefallen