転置行列
Posted: 2012年1月22日(日) 21:16
Ⅰ. 5行5列の行列[A]にデータを入力し、表示しなさい.データは不規則な値でキーボードから入
力します。
Ⅱ. 行列[A]の転置行列を行列[B]に代入し、表示しなさい.
Ⅲ. [C]←[A]+[B]の計算をして行列[C]表示しなさい.
Ⅳ. [C]←[A]-[B]の計算をして行列[C]表示しなさい.
Ⅴ. [C]←[A]*[B]の計算をして行列[C]表示しなさい.
Ⅵ. Ⅴ.求めた行列[C]の転置行列を行列[B]に代入し、表示しなさい.
#include<stdio.h>
int input(int x[][5])//データ入力
{ int a,k,j,n=5,i=0;
for(j=1;j<=n;j++){
for(k=1;k<=n;k++){
scanf_s("%d",&x[j-1][k-1]);
if(){ //入力エラーだったら0を返す
printf("エラー");
return(0);
} }
printf("\n");
}
return(n);
}
void kaku(int n,int x[][5])
{ int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%3d",x[j]);
}
printf("\n");
}
printf("\n");
return;
}
void han(int n,int a[][5],int b[][5])//転置行列計算
{ int j,k;
for(j=n-1;j>=0;j--)
{
for(k=0;k<n;k++)
{
b[k][j]=a[j][k];
}
}
printf("\n");
return;
}
void wa(int n,int a[][5],int b[][5],int c[][5])//行列の足し算
{ int j,k;
for(j=0;j<n;j++){
for(k=0;k<n;k++){
c[j][k]=a[j][k]+b[j][k];
}
}
return;
}
void sa(int n,int a[][5],int b[][5],int c[][5])//行列の引き算
{ int i,j,k;
for(j=0;j<n;j++){
for(k=0;k<n;k++){
c[j][k]=a[j][k]-b[j][k];
}
}
return;
}
void seki(int n,int a[][5], int b[][5],int c[][5])//行列の掛け算
{ int i,j,k;
for(j=0;j<n;j++){
for(k=0;k<n;k++){
for(i=0;i<n;i++){
c[j][k]=c[j][k]+a[j]*b[j];
}
}
}
return;
}
int main(void)
{ int a[5][5]={0},b[5][5]={0},c[5][5]={0},n;
n=input(a);
kaku(n,a);
han(n,a,b);
kaku(n,b);
wa(n,a,b,c);
kaku(n,c);
sa(n,a,b,c);
kaku(n,c);
seki(n,a,b,c);
kaku(n,c);
han(n,c,b);
kaku(n,b);
return(0);
}
赤字のif文の条件に何が入るのかどうしてもわかりません。
力します。
Ⅱ. 行列[A]の転置行列を行列[B]に代入し、表示しなさい.
Ⅲ. [C]←[A]+[B]の計算をして行列[C]表示しなさい.
Ⅳ. [C]←[A]-[B]の計算をして行列[C]表示しなさい.
Ⅴ. [C]←[A]*[B]の計算をして行列[C]表示しなさい.
Ⅵ. Ⅴ.求めた行列[C]の転置行列を行列[B]に代入し、表示しなさい.
#include<stdio.h>
int input(int x[][5])//データ入力
{ int a,k,j,n=5,i=0;
for(j=1;j<=n;j++){
for(k=1;k<=n;k++){
scanf_s("%d",&x[j-1][k-1]);
if(){ //入力エラーだったら0を返す
printf("エラー");
return(0);
} }
printf("\n");
}
return(n);
}
void kaku(int n,int x[][5])
{ int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%3d",x[j]);
}
printf("\n");
}
printf("\n");
return;
}
void han(int n,int a[][5],int b[][5])//転置行列計算
{ int j,k;
for(j=n-1;j>=0;j--)
{
for(k=0;k<n;k++)
{
b[k][j]=a[j][k];
}
}
printf("\n");
return;
}
void wa(int n,int a[][5],int b[][5],int c[][5])//行列の足し算
{ int j,k;
for(j=0;j<n;j++){
for(k=0;k<n;k++){
c[j][k]=a[j][k]+b[j][k];
}
}
return;
}
void sa(int n,int a[][5],int b[][5],int c[][5])//行列の引き算
{ int i,j,k;
for(j=0;j<n;j++){
for(k=0;k<n;k++){
c[j][k]=a[j][k]-b[j][k];
}
}
return;
}
void seki(int n,int a[][5], int b[][5],int c[][5])//行列の掛け算
{ int i,j,k;
for(j=0;j<n;j++){
for(k=0;k<n;k++){
for(i=0;i<n;i++){
c[j][k]=c[j][k]+a[j]*b[j];
}
}
}
return;
}
int main(void)
{ int a[5][5]={0},b[5][5]={0},c[5][5]={0},n;
n=input(a);
kaku(n,a);
han(n,a,b);
kaku(n,b);
wa(n,a,b,c);
kaku(n,c);
sa(n,a,b,c);
kaku(n,c);
seki(n,a,b,c);
kaku(n,c);
han(n,c,b);
kaku(n,b);
return(0);
}
赤字のif文の条件に何が入るのかどうしてもわかりません。