- ベストアンサー
数値解析について
- 数値解析では、与えられた数値データを計算機を用いて解析する方法です。
- この質問では、与えられた整数の配列を小さい順に並べ替えるソートアルゴリズムを扱っています。
- 具体的には、選択ソートアルゴリズムを使用して、配列内の要素を比較・交換しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、 >///配列の定義 >int d[5]; ここは int d[6]; に変えましょう。 >なんか配列がちゃんとなりません。 配列の大きさが数字5個分しかないのに6個の数字を入れようとしたらちゃんとなるはずがありません。 ソートの処理は難しくないので、自分で数字を入れながら1ステップずつ確認してみてください。 >printf("no %d = %d \n", i+1, d[i]); >の部分はどのように表示されるんでしょうか? 実行すればわかります。 >あと、なんでd[0]~d[4]までは定義しないんでしょうか? これ、意味不明だったのだけど、ひょっとしたら >int d[5]; とあるのをd[5]だけ定義してるとか思ってたの? 配列の宣言部の添え字は配列の大きさ(要素の個数)を表します。 それ以外の通常の式では、添え字は配列のインデックス(何番目の要素かを示す数)を表します。インデックスは0から始まりますが、0番目の要素もちゃんと1個分と数えます。 したがって配列の要素の個数を n、配列のインデックスの最大値を m とすると n = m+1 となります。
その他の回答 (2)
- mk48a
- ベストアンサー率56% (1133/2007)
とりあえずやりたいことはバブルソートのようなので、ここらへんを参考にしてください。 http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96%E3%83%AB%E3%82%BD%E3%83%BC%E3%83%88 http://www1.cts.ne.jp/~clab/hsample/Sort/Sort1.html iとjの二重ループで要素数が6とそれほど多くないなので、紙の上でもシミュレーションできます。 また、iのループ1回ごとに配列の内容を出力させると処理を追いやすくなります。 >また、コンパイルして実効した時に >printf("no %d = %d \n", i+1, d[i]); >の部分はどのように表示されるんでしょうか? 特にわかりにくいところはありませんが、実際にどのように表示されましたか? >あと、なんでd[0]~d[4]までは定義しないんでしょうか? 最初に数値を代入していますが、それとは別のことでしょうか? どこを疑問に思っているのかわかりません。 課題を丸投げする質問は現在のところ禁止ではなくなったようですが、自分でやる気の無い人に対しては回答はつきにくいですよ。 まず、自分でできることをやって、その結果を提示して、わからないところを聞いてください。
- Tacosan
- ベストアンサー率23% (3656/15482)
とりあえず「どのようにコンピュータで処理されているのか分りません」については, 無心になってコンピュータの気持ちで 1行ずつ追いかけていってください. 「自分は頭悪いんで」などと卑下する必要は毛頭ありません. そもそもコンピュータには「考える頭」からしてありません. その他の部分は... ん~, まず最初の「なんか配列がちゃんとなりません」については何がどう「ちゃんとならない」のかを書かなければ他人には通じない. あと, 最後の方の部分は C を最初からやり直した方が早いかも.
お礼
>int d[5]; とあるのをd[5]だけ定義してるとか思ってたの? はい。そう思ってました。d[5]だけ定義して他のものを定義しなかったら答えが40だけになるんじゃないかと思ってました。知識不足でした、一つずつ順を追ってやっていたら理解できました。コンピュータはほんとに難しいです。単純なことが組み合わさっただけなんでしょうが。でも、その単純なことを複雑に組み合わせることによって、作動しているんですから人間ってすごいなと思います。自分はバカですが。勉強も本当は簡単な事の組み合わせなんですよね。東大生(東大生に限りませんが)はその単純な作業をしっかり怠らずやっているからすごいと思います。まあ、でも頭でっかちになるのも嫌なんでほどほどに勉強します。 いろいろとありがとうございました。