ページ 1 / 1
野球の得点入力、勝敗出力
Posted: 2010年6月14日(月) 09:41
by MK
現在野球の9回表裏まで得点を入力し、それを計算させて勝敗またはドローを出力するプログラムを作成しましたが、より細かくしようと
1.得点を横に並べ(スコアボード)、9回表の時点で後攻が勝っていたら9回裏はなし。
2.延長をありにする(一定回でも同得点だとドロー)
3.コールドあり
を加えたいのですが「1.」のスコアボードでは数値を横に並べるのはprintfではゴチャゴチャしたプログラムになってしまいますし、9回裏をなしにするのは表の時点で先攻<後攻で裏の回だけループから外す。
など、正しいかはわかりませんが頭では浮かんでもプログラムに直せません;;;
組み立て方の説明をしていただけないでしょうか。よろしくお願いいたします。
Re:野球の得点入力、勝敗出力
Posted: 2010年6月14日(月) 09:47
by MK
余計な関数もあるかと思いますが
ssum 先攻
ksum 後攻
inn イニング
です。
Re:野球の得点入力、勝敗出力
Posted: 2010年6月14日(月) 10:29
by MK
9回裏をなしにするプログラムをやっていますが1回表を入力しただけで出力がおかしくなってしまいます

Re:野球の得点入力、勝敗出力
Posted: 2010年6月14日(月) 10:43
by MK
先攻<後攻の場合9回裏をなしにするプログラムは完成しました^^
Re:野球の得点入力、勝敗出力
Posted: 2010年6月14日(月) 11:08
by たいちう
> 「1.」のスコアボードでは数値を横に並べるのはprintfではゴチャゴチャしたプログラムになってしまいますし、
ゴチャゴチャしててもいいので、まずは作って添付してください。
全部できないならできるところまでを。
それからならゴチャゴチャをどう整理したら良いかを答えられると思います。
Re:延長
Posted: 2010年6月14日(月) 12:14
by MK
スコアの表示はなんとかできました
次に18回までの延長をやっています。
9回裏(inn 18)の時点で先攻後攻が同点なら新たに18回(inn 36)までを繰り返せばできると思ったので
while(inn<18)のループが終わり、同点なら更にwhile(inn<36)を繰り返そうとやってみましたが詰ってしまいました。
どういった手順を踏めば延長の表示ができるのでしょうか
Re:延長
Posted: 2010年6月14日(月) 12:16
by シエル
サヨナラ勝ちはないのかぁ
Re:延長
Posted: 2010年6月14日(月) 13:07
by たいちう
18回まで扱いたいならば、runの配列の宣言で要素数を増やさないと。
> どういった手順を踏めば延長の表示ができるのでしょうか
どのような表示をしたいのかわかりませんが、
本来野球は18回まで行われると考えてはどうでしょうか?
その上で、9回以降に点差があればそこで試合終了とする、と。
Re:延長
Posted: 2010年6月15日(火) 18:45
by MK
>>たいちうさん
できました^^
少し深く考え過ぎていたようです。
ありがとうございました
Re:延長
Posted: 2010年6月16日(水) 11:15
by MK
解決としてしまいまいたが、完成したプログラムの確認をしていただけないでしょうか。
もしオカシイ部分やプログラムをもっと簡潔にできるようでしたらご指摘お願いいたします。
・先攻後攻の順で得点を入力し、合計の計算やスコアボード、勝敗の表示
・9回裏、延長は18回まで
・10点差でコールド
Re:延長
Posted: 2010年6月16日(水) 11:39
by たいちう
好みの問題でもありますが、私ならばinnは1~18の範囲とします。
そしてforループにします。
for (inn = 1; inn <= 18; inn++) { ... }
当然runの添え字として使うときは1を引きます。
実際の野球でのイニングの扱いに合わせるか、
配列の添え字の都合に合わせるかですが、
この場合は前者のほうがプログラムを理解しやすいと思いますので。
(配列を0~18まで用意して0を使わないという方法もあります。お好みでどうぞ。)
動作確認は面倒なので私はパス。個人的には甘えすぎじゃないかと思います。
その他気付いた点は、、、
・配列を初期化する
・演算子+=を使う
・absを使う
・インデントをそろえる
これらが直ったら、更に指摘したくなることもあるかもしれません。
Re:延長
Posted: 2010年6月16日(水) 11:48
by シエル
数字以外の文字を入力したら試合終了しちゃうことかな。
Re:延長
Posted: 2010年6月16日(水) 12:59
by たいちう
甘えすぎという表現は、きつすぎました。申し訳ありません。
自分では間違いに気付きにくいものですからね。
私にテスト(or コードの精査)する気がなかったというだけの話でした。
Re:延長
Posted: 2010年6月17日(木) 00:03
by MK
>>シエルさん
数字ばかりを入力していたので気が付きませんでした。ありがとうございます
>>たいちうさん
どうしても自分だけでは不安だということや、コールドの意味も確かになっておらずお聞きしてみましたが確かに頼り過ぎていたところもあります。今度からはもう少し本やネットで調べ努力をします。ありがとうございます