野球の得点入力、勝敗出力

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
MK

野球の得点入力、勝敗出力

#1

投稿記事 by MK » 15年前

現在野球の9回表裏まで得点を入力し、それを計算させて勝敗またはドローを出力するプログラムを作成しましたが、より細かくしようと
1.得点を横に並べ(スコアボード)、9回表の時点で後攻が勝っていたら9回裏はなし。
2.延長をありにする(一定回でも同得点だとドロー)
3.コールドあり
を加えたいのですが「1.」のスコアボードでは数値を横に並べるのはprintfではゴチャゴチャしたプログラムになってしまいますし、9回裏をなしにするのは表の時点で先攻<後攻で裏の回だけループから外す。
など、正しいかはわかりませんが頭では浮かんでもプログラムに直せません;;;
組み立て方の説明をしていただけないでしょうか。よろしくお願いいたします。

MK

Re:野球の得点入力、勝敗出力

#2

投稿記事 by MK » 15年前

余計な関数もあるかと思いますが
ssum 先攻
ksum 後攻
inn イニング
です。

MK

Re:野球の得点入力、勝敗出力

#3

投稿記事 by MK » 15年前

9回裏をなしにするプログラムをやっていますが1回表を入力しただけで出力がおかしくなってしまいます 画像

MK

Re:野球の得点入力、勝敗出力

#4

投稿記事 by MK » 15年前

先攻<後攻の場合9回裏をなしにするプログラムは完成しました^^

たいちう

Re:野球の得点入力、勝敗出力

#5

投稿記事 by たいちう » 15年前

> 「1.」のスコアボードでは数値を横に並べるのはprintfではゴチャゴチャしたプログラムになってしまいますし、

ゴチャゴチャしててもいいので、まずは作って添付してください。
全部できないならできるところまでを。
それからならゴチャゴチャをどう整理したら良いかを答えられると思います。

MK

Re:延長

#6

投稿記事 by MK » 15年前

スコアの表示はなんとかできました
次に18回までの延長をやっています。

9回裏(inn 18)の時点で先攻後攻が同点なら新たに18回(inn 36)までを繰り返せばできると思ったので
while(inn<18)のループが終わり、同点なら更にwhile(inn<36)を繰り返そうとやってみましたが詰ってしまいました。
どういった手順を踏めば延長の表示ができるのでしょうか

シエル

Re:延長

#7

投稿記事 by シエル » 15年前

サヨナラ勝ちはないのかぁ

たいちう

Re:延長

#8

投稿記事 by たいちう » 15年前

18回まで扱いたいならば、runの配列の宣言で要素数を増やさないと。

> どういった手順を踏めば延長の表示ができるのでしょうか

どのような表示をしたいのかわかりませんが、
本来野球は18回まで行われると考えてはどうでしょうか?
その上で、9回以降に点差があればそこで試合終了とする、と。

MK

Re:延長

#9

投稿記事 by MK » 15年前

>>たいちうさん
できました^^
少し深く考え過ぎていたようです。
ありがとうございました

MK

Re:延長

#10

投稿記事 by MK » 15年前

解決としてしまいまいたが、完成したプログラムの確認をしていただけないでしょうか。
もしオカシイ部分やプログラムをもっと簡潔にできるようでしたらご指摘お願いいたします。


・先攻後攻の順で得点を入力し、合計の計算やスコアボード、勝敗の表示
・9回裏、延長は18回まで
・10点差でコールド

たいちう

Re:延長

#11

投稿記事 by たいちう » 15年前

好みの問題でもありますが、私ならばinnは1~18の範囲とします。
そしてforループにします。
for (inn = 1; inn <= 18; inn++) { ... }
当然runの添え字として使うときは1を引きます。

実際の野球でのイニングの扱いに合わせるか、
配列の添え字の都合に合わせるかですが、
この場合は前者のほうがプログラムを理解しやすいと思いますので。
(配列を0~18まで用意して0を使わないという方法もあります。お好みでどうぞ。)

動作確認は面倒なので私はパス。個人的には甘えすぎじゃないかと思います。
その他気付いた点は、、、
・配列を初期化する
・演算子+=を使う
・absを使う
・インデントをそろえる

これらが直ったら、更に指摘したくなることもあるかもしれません。

シエル

Re:延長

#12

投稿記事 by シエル » 15年前

数字以外の文字を入力したら試合終了しちゃうことかな。

たいちう

Re:延長

#13

投稿記事 by たいちう » 15年前

甘えすぎという表現は、きつすぎました。申し訳ありません。
自分では間違いに気付きにくいものですからね。
私にテスト(or コードの精査)する気がなかったというだけの話でした。

MK

Re:延長

#14

投稿記事 by MK » 15年前

>>シエルさん
数字ばかりを入力していたので気が付きませんでした。ありがとうございます

>>たいちうさん
どうしても自分だけでは不安だということや、コールドの意味も確かになっておらずお聞きしてみましたが確かに頼り過ぎていたところもあります。今度からはもう少し本やネットで調べ努力をします。ありがとうございます

閉鎖

“C言語何でも質問掲示板” へ戻る