二次元配列を使い,キーボードから値を読み込んで行列を作り,転置行列にして表示しなさい,というプログラムを作っているのですがうまくいきません…。
どうすればいいのかすらよくわからなかったため,ネットで検索していくつかのサイトに頼り,つぎはぎのようなプログラムができました。
自分でも意味はよくわかっていません。やっとコンパイルエラーがでないところまではこぎつけたのですが…。
実行結果が数字まみれになってしまいます。助けてください…。
ソースプログラム
#include <stdio.h>
void tenti(int a,int b,int n[5][5],int m[5][5]);
int main(void)
{
int n[5][5],m[5][5];
int i,j,a=5,b=5;
for(i=0;i<a;i++){
for(j=0;j<b;j++){
printf("n[%d][%d]:",i,j);
scanf("%d",&n[j]);
}
}
tenti(a,b,m,n);
for(i=0;i<a;i++){
for(j=0;j<b;j++){
printf("%3.0d",n[j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<a;i++){
for(j=0;j<b;j++){
printf("%3.0d",m[j]);
}
printf("\n");
}
return(0);
}
void tenti(int a,int b,int n[5][5],int m[5][5])
{
int i,j;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
m[j]=n[j];
}
}
}
実行結果
$ ./tenti.out
n[0][0]:1
n[0][1]:2
n[0][2]:3
n[0][3]:4
n[0][4]:5
n[1][0]:6
n[1][1]:7
n[1][2]:8
n[1][3]:9
n[1][4]:1
n[2][0]:2
n[2][1]:3
n[2][2]:4
n[2][3]:5
n[2][4]:6
n[3][0]:7
n[3][1]:8
n[3][2]:9
n[3][3]:1
n[3][4]:2
n[4][0]:3
n[4][1]:4
n[4][2]:5
n[4][3]:6
n[4][4]:7
2268435456163032332864092646409264
1629027232 1629714752 11628785944
641270064092641630324288 21629205056
1629714752 2163032422416303233281630323328
163032428816290272321629002848 6409264
21629027232641270016297147521630324288
268435456 6409264 21629027232
16303233281629714752163032428816303242241629002848
6409264 1 21630323328
64092641628785944162920505616303233286409264
こんなかんじです…
実行結果にアドレス(?)のようなものがでてしまいます…
Re: 実行結果にアドレス(?)のようなものがでてしまいます…
a,b,mだのnだの,意味のわからない変数名にするから
取り違えが起きたりするんじゃないでしょうか.
一度,自分自身にとって意味のわかる明確な名前に付け直してみては?
取り違えが起きたりするんじゃないでしょうか.
一度,自分自身にとって意味のわかる明確な名前に付け直してみては?