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


C 例題EX ループする条件判断を2種類
2006年07月22日 (土) | 編集 |
例題というか余興というか趣味というか。
丁度良く、2種類のループの仕方が分かったのでそれぞれ判断するプログラムを組んでみる。
そういうわけで今回は入門書には載っていない例題だ。
for文とwhile文でそれぞれ似たような条件のプログラムを組んでみる。


勝利条件:
「一撃喰らえば即死すると仮定して、基礎回避率を入力し、攻撃回数n回目での生存確率を求めるプログラム」
「一撃喰らえば即死すると仮定して、基礎回避率を入力し、生存確率が50%以下になる攻撃回数を求めるプログラム」
「それぞれ作れや」


攻略方法:
まず上の条件から。
これはfor文なので必要とされる変数は

基礎回避率x 少数なのでfloat、もしくはdoubleで宣言
攻撃回数n 整数なのでintで宣言
生存率y 少数なのでfloat、もしくはdoubleで宣言
ループ変数i for文なのでループ変数が必要 intで宣言

looptest_ex.jpg

次に数値xや数値nを入力する必要があるので適当にprintfやscanfを記述。

looptest_ex2.jpg

後はfor文を書いて式を書いてn回目の生存確率=n回連続で回避する確率を求めればOK。
確率xでn回連続で回避する、という値はxのn乗で求められるので、

y=y*x

で生存確率yを求めることが出来る。なんでやねん、とか言われても困るが、とにかくそんな感じだから仕方がない。分からない人は数学的才能っつか説明的才能が無い俺か、もしくは自分を恨んでくれ。

そしてfor文さえ分かれば、後はそれを出力すればいいだけ。欠伸をするより簡単だな。

looptest_ex3.jpg
これで終了だ

実行してみよう。

looptest_ex4.jpg
こんな感じ

最後のprintf部分間違えているし。
また、コンパイルの時に例によって例の如く何度も焦らされたが割愛するぜ。

ついでにちょっと分かり難いので適当に色々と修正してみる。

looptest_ex5.jpglooptest_ex6.jpg
こんな感じに。

上の勝利条件についてはまあこんなものでいいだろう。
自分で決めた勝利条件でこんなものも何もないものだが。
んじゃ次は下の条件のプログラムをやってみようか。


「一撃喰らえば即死すると仮定して、基礎回避率を入力し、生存確率が50%以下になる攻撃回数を求めるプログラム」

これはwhile文なので必要とされる変数は

基礎回避率x もう最初から整数型でいいや
基礎回避率xの少数化 z 少数なのでfloat、もしくはdoubleで宣言
生存確率y 勿論少数なのでfloat、もしくはdouble型
回数n yが50%、つまり0.5以下になったときの数値。整数型で宣言

基礎回避率xを入力する必要があるので適当にprintfやscanfを記述。

looptest_ex7.jpg
使い回し? その通り

後はwhile文を書いて式を書いて何回目で生存確率yが0.5以下になるか求めればOK。
n回目の生存確率yという値はzのn乗で求められるので、

y=y*z

で生存確率yを求めることが出来る。
ってfor文と変わらなくね? しかもnを全く使ってなくね?

だがこれでいいのである。

なんでやねん、とか言われても困るが、とにかくそんな感じだから仕方がない。分からない人は数学的才能っつか説明的才能が無い俺か、もしくは自分を恨んでくれ。

そしてwhile文さえ分かれば、後はそれを出力すればいいだけ。for文を経ているので書く手間もあまりかからない。全く楽なものだな。

looptest_ex8.jpg
こんな感じ

実行してみよう。

looptest_ex9.jpg
概ねOK

今回も何回かコンパイラの抵抗にあったが、今は素直なもんだぜヘヘヘ
最初からおとなしく言うこと聞いていればいいのにな
手間かけさせやがるぜ


とまあ、以上で今回の例題は終了だ。少しは分かってきた気がするな。
まだ不安なところもあるので、もうちょい例題をこなしたいところではあるが…いい加減次に進まないならんだろう。後はやってるうちに慣れろということで。


教訓:
変数の値を初期化するのは宣言した後で
for文の条件式の式3の後には;がいらない
変数1を変数2を使って定義したいなら変数2の値を入力してからする
例:zをxで表したいのならxの値が入力されてからz=…の式を書く
スポンサーサイト

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