利用者:Raro martini/B/No.9
表示
< 利用者:Raro martini | B
/* rep12-4.c */
#include <stdio.h>
#define N 3 /* マクロ定義 */
union{
float ab[N][N]; /* 列×3 */
float xy[N][N]; /* 列×3 */
}op1,op2; /* 行×3 */
void Initialization(int n)
{
int i,j,k; /* roop counter */
if(n==1) /* 行列A(X),Bの初期化 */
for(i=k=0;i<N;i++)
for(j=0;j<N;j++,k++){
op1.ab[i][j] = k+1;
op2.ab[i][j] = k+4;
if(op2.ab[i][j]>=10)
op2.ab[i][j] = k-5;
}
else /* 行列(X,) Yの初期化 */
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(op2.xy[i][j]>2)
op2.xy[i][j]-=2;
else
op2.xy[i][j]+=7;
}
void function(int i,int f)
{
if(i==1) /* 関数記号を表示する */
printf("%4c ",f);
else
printf("%7c",NULL);
}
void put_plus(void)
{
int i,j; /* roop counter */
for(i=0;i<N;i++){
for(j=0;j<N;j++)
printf("%2.0f",op1.ab[i][j]);
function(i,'+');
for(j=0;j<N;j++)
printf("%2.0f",op2.ab[i][j]);
function(i,'=');
for(j=0;j<N;j++) /* 足し算 */
printf("%2.0f ",op1.ab[i][j]+op2.ab[i][j]);
printf("\n");
}
}
void put_mult(void)
{
int i,j,k; /* roop counter */
float sum=0; /* 解答算出用 */
for(i=0;i<N;i++){
for(j=0;j<N;j++)
printf("%2.0f",op1.xy[i][j]);
function(i,'*');
for(j=0;j<N;j++)
printf("%2.0f",op2.xy[i][j]);
function(i,'=');
for(k=0;k<N;k++){ /* 掛け算 */
for(j=0;j<N;j++)
sum+=(op1.xy[i][j]*op2.xy[j][k]);
printf("%4.0f",sum);
sum=0;
}
printf("\n");
}
}
int main()
{
Initialization(1); /* 初期化関数 1 */
printf("%4c%6c%6c%6c%6c\n",'A','+','B','=','C');
put_plus(); /* 足し算をする */
Initialization(2); /* 初期化関数 2 */
printf("\n%4c%6c%6c%6c%9c\n",'X','*','Y','=','Z');
put_mult(); /* 掛け算をする */
return 0;
}