• 締切済み

二次元配列についての質問です。

1~9の数字を9,8,7,6,5,4,3,2,1と出力するようなプログラムを作成しているのですが、解りません。一応ある程度(以下のプログラム)出来たのですが、何処をどう直せばいいか解りません。何処を直せばいいか教えて下さい。 #include<stdio.h> int main(void){ int i,mt[3][3]= {{1,2,3}, {4,5,6}, {7,8,9}}; for(i=0;i<3;i++){ printf("%3d",mt[i][i]); } printf("\n"); return(0); }

みんなの回答

  • 82ken
  • ベストアンサー率0% (0/2)
回答No.7

二次元を使いたいのであれば、カウンター変数は二つ用意する事が 一般だと思われます。 mtの宣言は、質問のままだとして、ロジック部分は、順次的に デクリメントし、以下になるかと思われます。 int i,j; for(i=2;0<=i;i--){ for(j=2;0<=j;j--){ printf("%d,",mt[i][j]); } }

  • kakuritsu
  • ベストアンサー率23% (62/261)
回答No.6

>1~9の数字を9,8,7,6,5,4,3,2,1と出力するようなプログラム 言葉通りだったら、以下でよいのでは? #include <stdio.h> int main(void){ printf("9,8,7,6,5,4,3,2,1"); } 何で配列が必要なのか、さっぱりわかりません!

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.5

どうしても2次元配列を使いたいのであれば、 #include <stdio.h> int main(void) { int mt[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, }; int i, j; for (i = sizeof(mt) / sizeof(mt[0]) - 1; i >= 0; --i) { for (j = sizeof(mt[0]) / sizeof(mt[0][0]) - 1; j >= 0; --j) { printf("%d%s", mt[i][j], (i != 0) || (j != 0) ? "," : ""); } } putchar('\n'); return 0; }

noname#77845
noname#77845
回答No.4

#3さんへ 「これは、仕様に合っていないかもしれません。」 そうかもしれません。ただ質問者さんの記載した物を使っただけ(配列の部分を削除しただけ)ですから。(w 「数値どうしをカンマでつなぐことになっているようです。」 なるほど…。では、 #include <stdio.h> int main(void){ int i; for(i=9;i>1;i--){ printf("%d,",i); } printf("%d\n",i); return(0); } で、どうだろう…。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

>#1さん >printf("%3d",i); これは、仕様に合っていないかもしれません。 >9,8,7,6,5,4,3,2,1 数値どうしをカンマでつなぐことになっているようです。

  • kirinoma
  • ベストアンサー率53% (288/542)
回答No.2

確かに#1さんのおっしゃる様に意図がいまいちつかめませんね. 推測されるのは,以下でしょうか. ・二次元配列の要素の入替え(上下・左右反転,縦横置換など) ・一定規則による数字の置換(入力が1なら9を出力,入力が6なら4を出力.つまり入力がNなら(10-N)を出力) 現状で回答できるのはこの程度です.

noname#77845
noname#77845
回答No.1

補足してください。 何をどうしたいの? 配列に入っている要素を、どのように表示したいのかが全くわかりません。 ただ9~1まで表示するなら配列はいらないでしょ? #include <stdio.h> int main(void){ int i; for(i=9;i>0;i--){ printf("%3d",i); } printf("\n"); return(0); } で十分。 具体的に、配列に対してどういう操作がしたいのかを補足してください。

ellark
質問者

補足

申し訳御座いません、遅れました。補足要求、という事で補足させて頂きます。 まず先に言っておかねばならないのが、あくまで二次元配列を使うという点。 確かに9から順に1までを出力するものは、配列を使わなくても可能です。ですが、プログラミングを勉強している身なので、色々といじくっている訳です。 お気付きかと思いですが私が示したものは、1,5,9を出力するものです。更に9,5,1を出力するものも出来たのですが、もう一歩踏み込んで、9,8,7,6,5,4,3,2,1の順で出力しよう、という事になりました。 つまり、私が示した配列(必須)をいじくり、9から順に1まで出力したいのです。 何も二次元配列じゃなくても、と言われる方がいらっしゃるかもしれませんが、あえてそこはつっこまないようお願い致します。

関連するQ&A