野球の得点入力、勝敗出力
野球の得点入力、勝敗出力
現在野球の9回表裏まで得点を入力し、それを計算させて勝敗またはドローを出力するプログラムを作成しましたが、より細かくしようと
1.得点を横に並べ(スコアボード)、9回表の時点で後攻が勝っていたら9回裏はなし。
2.延長をありにする(一定回でも同得点だとドロー)
3.コールドあり
を加えたいのですが「1.」のスコアボードでは数値を横に並べるのはprintfではゴチャゴチャしたプログラムになってしまいますし、9回裏をなしにするのは表の時点で先攻<後攻で裏の回だけループから外す。
など、正しいかはわかりませんが頭では浮かんでもプログラムに直せません;;;
組み立て方の説明をしていただけないでしょうか。よろしくお願いいたします。
1.得点を横に並べ(スコアボード)、9回表の時点で後攻が勝っていたら9回裏はなし。
2.延長をありにする(一定回でも同得点だとドロー)
3.コールドあり
を加えたいのですが「1.」のスコアボードでは数値を横に並べるのはprintfではゴチャゴチャしたプログラムになってしまいますし、9回裏をなしにするのは表の時点で先攻<後攻で裏の回だけループから外す。
など、正しいかはわかりませんが頭では浮かんでもプログラムに直せません;;;
組み立て方の説明をしていただけないでしょうか。よろしくお願いいたします。
Re:野球の得点入力、勝敗出力
> 「1.」のスコアボードでは数値を横に並べるのはprintfではゴチャゴチャしたプログラムになってしまいますし、
ゴチャゴチャしててもいいので、まずは作って添付してください。
全部できないならできるところまでを。
それからならゴチャゴチャをどう整理したら良いかを答えられると思います。
ゴチャゴチャしててもいいので、まずは作って添付してください。
全部できないならできるところまでを。
それからならゴチャゴチャをどう整理したら良いかを答えられると思います。
Re:延長
好みの問題でもありますが、私ならばinnは1~18の範囲とします。
そしてforループにします。
for (inn = 1; inn <= 18; inn++) { ... }
当然runの添え字として使うときは1を引きます。
実際の野球でのイニングの扱いに合わせるか、
配列の添え字の都合に合わせるかですが、
この場合は前者のほうがプログラムを理解しやすいと思いますので。
(配列を0~18まで用意して0を使わないという方法もあります。お好みでどうぞ。)
動作確認は面倒なので私はパス。個人的には甘えすぎじゃないかと思います。
その他気付いた点は、、、
・配列を初期化する
・演算子+=を使う
・absを使う
・インデントをそろえる
これらが直ったら、更に指摘したくなることもあるかもしれません。
そしてforループにします。
for (inn = 1; inn <= 18; inn++) { ... }
当然runの添え字として使うときは1を引きます。
実際の野球でのイニングの扱いに合わせるか、
配列の添え字の都合に合わせるかですが、
この場合は前者のほうがプログラムを理解しやすいと思いますので。
(配列を0~18まで用意して0を使わないという方法もあります。お好みでどうぞ。)
動作確認は面倒なので私はパス。個人的には甘えすぎじゃないかと思います。
その他気付いた点は、、、
・配列を初期化する
・演算子+=を使う
・absを使う
・インデントをそろえる
これらが直ったら、更に指摘したくなることもあるかもしれません。