• ベストアンサー

勝率をプログラムに

この度もこのサイトでお世話になったのですが、 またプログラミングについて質問させていただきます。 「勝ち数・負け数を入力して、勝率を?割?分?厘という カタチで表示する」というプログラム(1厘以下は切り捨て) はどのように作れば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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; }

komatulong
質問者

お礼

すいません。分かりました。 int型で勝ち数÷(勝ち数+負け数)をすると小数点以下が切り捨てで 0になってしまうので勝ち数に10をかけるのですね。(割の時) どうもプログラムの仕組みと計算を考えるのが 苦手なようです。

komatulong
質問者

補足

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』は、なぜこのようになるのですか? 割合で頭がこんがらがって分からないです。

その他の回答 (3)

noname#77845
noname#77845
回答No.3

5勝5敗なら、勝率は5割丁度になりますよね? なので、 実数変数=勝ち数/(勝ち数+負け数); で、勝率が求められます。 この変数の中身の小数点第1位と第2位と第3位を求めれば、?割?分?厘が求められます。

komatulong
質問者

お礼

ありがとうございます。 よく考えたら分かりました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

勝率を求める数式は分りますよね? それをプログラム化するだけですけど。難しい条件式もないし何が問題なんだか?ですね。 どちらにしても問題の丸投げは削除対処ですから、自分で作成した部分を示してください。

komatulong
質問者

補足

すみません。 今度からは、分からない部分を具体的にした上で 質問させていただこうと思います。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

わからないところはどこですか?

komatulong
質問者

補足

a,bにそれぞれ勝ち数と負け数を (キーボードから)代入してcにa,bの合計を入れた後 どういう風に割・分・厘の計算をすればいいでしょうか? (割=1/10、分=1/100、厘=1/1000という基本的な事は もちろん分かるのですが)割合が苦手でうまくプログラムで表せません。 情けない…

関連するQ&A

専門家に質問してみよう