- ベストアンサー
勝率をプログラムに
この度もこのサイトでお世話になったのですが、 またプログラミングについて質問させていただきます。 「勝ち数・負け数を入力して、勝率を?割?分?厘という カタチで表示する」というプログラム(1厘以下は切り捨て) はどのように作れば良いでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#include <stdio.h> int main(void) { int ks,ms,ss; printf("勝ち数?"); scanf("%d",&ks); printf("負け数?"); scanf("%d",&ms); ss = ks + ms; printf("勝率%d割%d分%d厘\n",ks * 10 / ss,(ks * 100 / ss) % 10,(ks * 1000 / ss) % 10); return 0; }
その他の回答 (3)
5勝5敗なら、勝率は5割丁度になりますよね? なので、 実数変数=勝ち数/(勝ち数+負け数); で、勝率が求められます。 この変数の中身の小数点第1位と第2位と第3位を求めれば、?割?分?厘が求められます。
お礼
ありがとうございます。 よく考えたら分かりました。
- zwi
- ベストアンサー率56% (730/1282)
勝率を求める数式は分りますよね? それをプログラム化するだけですけど。難しい条件式もないし何が問題なんだか?ですね。 どちらにしても問題の丸投げは削除対処ですから、自分で作成した部分を示してください。
補足
すみません。 今度からは、分からない部分を具体的にした上で 質問させていただこうと思います。
- asuncion
- ベストアンサー率33% (2127/6289)
わからないところはどこですか?
補足
a,bにそれぞれ勝ち数と負け数を (キーボードから)代入してcにa,bの合計を入れた後 どういう風に割・分・厘の計算をすればいいでしょうか? (割=1/10、分=1/100、厘=1/1000という基本的な事は もちろん分かるのですが)割合が苦手でうまくプログラムで表せません。 情けない…
お礼
すいません。分かりました。 int型で勝ち数÷(勝ち数+負け数)をすると小数点以下が切り捨てで 0になってしまうので勝ち数に10をかけるのですね。(割の時) どうもプログラムの仕組みと計算を考えるのが 苦手なようです。
補足
printf("勝率%d割%d分%d厘\n",ks * 10 / ss,(ks * 100 / ss) % 10,(ks * 1000 / ss) % 10); の部分の 『ks * 10 / ss』、 『(ks * 100 / ss) % 10』、 『(ks * 1000 / ss) % 10』は、なぜこのようになるのですか? 割合で頭がこんがらがって分からないです。