転置行列

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tyuri

転置行列

#1

投稿記事 by tyuri » 13年前

Ⅰ. 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文の条件に何が入るのかどうしてもわかりません。

non
記事: 1097
登録日時: 14年前

Re: 転置行列

#2

投稿記事 by non » 13年前

何が入力されたらエラーなのか示してもらわなきゃ、誰もわからない。
return で n を返す理由もわからないが・・・
non

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 転置行列

#3

投稿記事 by みけCAT » 13年前

コードはcodeタグで囲みましょう。(でもそうすると一部分を赤字にするのは無理か・・・)

コード:

if(scanf_s("%d",&x[j-1][k-1])!=1){ //入力エラーだったら0を返す
printf("エラー");
return(0);
}
でどうでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

tyuri

Re: 転置行列

#4

投稿記事 by tyuri » 13年前

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文の条件に何が入るのかどうしてもわかりません。

box
記事: 2002
登録日時: 14年前

Re: 転置行列

#5

投稿記事 by box » 13年前

入力エラーの定義を示してください。
tyuri さんが書きました:

コード:

		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);
input関数で0(入力エラー)が返ったとき、そのままkaku関数以降を実行してもいいのでしょうか。
私はまずいと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 転置行列

#6

投稿記事 by みけCAT » 13年前

無視しないでいただけるとありがたいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る