No.14601![]() |
2次元配列について 投稿者---アルル(2004/06/13 12:09:46) |
||
この問題は1番目の列要素に点数の高い順からの順位を格納する プログラムを作成する。というものです。 本当はもっと要素があったのですが、わかり難かったので あえて3つにしました。 if(seiseki[i][0]<seiseki[j][0]) if文の条件が何を意味しているのかがわかりません。 for文の2重ループで何と何を比較しているのでしょうか。 外側のループは2次元配列で初期化した要素全体をあらわしている? 内側のループは何を・・? #include <stdio.h> int main(void) { int seiseki[3][2]={ {67,1},{43,1},{56,1} }; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) { if(seiseki[i][0]<seiseki[j][0]) { seiseki[i][1]++; printf("%d %d\n",seiseki[i][1]); } } puts("点数 順位"); for(i=0;i<3;i++) { printf("%3d %2d\n",seiseki[i][0],seiseki[i][1]); } return 0; } |
No.14602![]() |
Re:2次元配列について 投稿者---monkey(2004/06/13 14:34:02) |
||
>if文の条件が何を意味しているのかがわかりません。 2次元配列で与えられたデータを 67, 1 43, 1 56, 1 という行列で考えたとき,i行目とj行目の0列目(点数)の大小を比較しています. (i=0,1,2, j=0,1,2) |
No.14604![]() |
Re:2次元配列について 投稿者---アルル(2004/06/13 15:38:06) |
||
>>if文の条件が何を意味しているのかがわかりません。 > >2次元配列で与えられたデータを > >67, 1 >43, 1 >56, 1 > >という行列で考えたとき,i行目とj行目の0列目(点数)の大小を比較しています. 考え方はこのようでしょうか? if(seiseki[i][0]<seiseki[j][0]) printf("%d %d\n",seiseki[i][0],seiseki[j][0]); printf()で実行してみました。 43 67 43 56 56 67 これをおしゃってるのですよね? |
No.14606![]() |
Re:2次元配列について 投稿者---アルル(2004/06/13 15:45:57) |
||
上記は seiseki[i][1]++; で順位を下げているみたいでした。 難しいです。 |
No.14607![]() |
Re:2次元配列について 投稿者---monkey(2004/06/13 15:58:44) |
||
>>43 67 >>43 56 >>56 67 >> >> これをおっしゃっているのですよね? 前回のコメントは,単にif文の条件式の意味を説明しただけです. そういうご質問だったので... >上記は seiseki[i][1]++; > >で順位を下げているみたいでした。 それで良いんですよ. if文の条件式は,左辺<右辺のときが真で,そのときに小さい方の順位をひとつ下げる(順位を表す値をインクリメント)という操作をしています. |
No.14612![]() |
Re:2次元配列について 投稿者---アルル(2004/06/13 22:48:31) |
||
>前回のコメントは,単にif文の条件式の意味を説明しただけです. >そういうご質問だったので... ごめんなさい。話がとんでしまいました。 > >>上記は seiseki[i][1]++; >> >>で順位を下げているみたいでした。 > >それで良いんですよ. >if文の条件式は,左辺<右辺のときが真で,そのときに小さい方の順位をひとつ下げる(順位を表す値をインクリメント)という操作をしています. ごめんなさい。話がとんでしまいました。 どうもありがとうございました。よかったです。m(._.)m |