Ⅰ. 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文の条件に何が入るのかどうしてもわかりません。
転置行列
Re: 転置行列
コードはcodeタグで囲みましょう。(でもそうすると一部分を赤字にするのは無理か・・・)
でどうでしょうか?
でどうでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 転置行列
tyuri さんが書きました:Ⅰ. 5行5列の行列[A]にデータを入力し、表示しなさい.データは不規則な値でキーボードから入
力します。
Ⅱ. 行列[A]の転置行列を行列[B]に代入し、表示しなさい.
Ⅲ. [C]←[A]+[B]の計算をして行列[C]表示しなさい.
Ⅳ. [C]←[A]-[B]の計算をして行列[C]表示しなさい.
Ⅴ. [C]←[A]*[B]の計算をして行列[C]表示しなさい.
Ⅵ. Ⅴ.求めた行列[C]の転置行列を行列[B]に代入し、表示しなさい.
code=C++
#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);
}/code
赤字のif文の条件に何が入るのかどうしてもわかりません。
Re: 転置行列
入力エラーの定義を示してください。
私はまずいと思います。
input関数で0(入力エラー)が返ったとき、そのままkaku関数以降を実行してもいいのでしょうか。
私はまずいと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。