概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C 例題7 配列にデータを入力する
2006年08月01日 (火) | 編集 |
別に配列じゃなくても計算は出来るってのは寂しいので、配列を使った方が楽だと思われるプログラムを組んでみる。

というか逆に配列使わないでどうやって実現したものか分からん。
勝利条件:
「100点満点とし、得点を10点幅で11個にランク分けし、その幅に何人いるかをカウントして表示するプログラムを組めや」

攻略方法:

問題からして既に何のことやらって感じだが、
要するに

0~9点、10~19点、20~29点、30~39点、40~49点、50~59点、60~69点、70~79点、80~89点、90~99点、100点

の11個のランクに分類すればいいことになる。点数を配列として、点数[0]を0~9点、点数[1]を10~19点…というように定義すれば分かり易かろう。
と、なると、後はどうやって分類したものかという話になるが、

例えば点数[0]が0~9点ならば
点数/10=0

点数[1]が10~19点ならば
点数/10=1

点数[2]が20~29点ならば
点数/10=2

といったように、点数/10が配列番号及び添字に対応している。
なので、入力された点数を10で割って、その商を添字とする配列を+1することを繰り返す、という手法で分類が出来るのである。都合のいい話だな。


ま、こちらに都合がいい分には問題ないので早速書いてみよう。

点数の入力を行うのでそれ用に変数dat、色々便利なループに使うループ変数i、点数管理用の配列scoreをそれぞれintで宣言する。

test_int_string_ex.jpg
配列scoreも初期化しておく

次に、入力部分のループを書く。

test_int_string_ex2.jpg
データの終わりはEOF

点数/10で添字が得られるので、score[dat/10]で加算すべき配列が得られる。
後は++でそれを+1してカウントすればOK。score[dat/10]=score[dat/10]+1でもいいかもしれないが、いかにも面倒臭い。文字数多いし。

最後にカウントされたデータを出力する。

test_int_string_ex3.jpg
文章部分はアドリブで

実行してみよう

test_int_string_ex4.jpg
概ねOK


うむ、数列もなかなか便利。
っつか今回のケース、数列使わないでどうにか出来るんだろうか。
やればどうにかなりそうだが…なんか小学生の算数の問題をxとかyとか方程式とか使わないで解くのにも似た労力が必要そうだな。アレ意外と大変なんよ。

我々は効率化に慣れ過ぎているッ
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。