C++-练习-46

题目:

许多州的彩票发行机构都使用如下所示程序的简单彩票的变体。在这些玩法中,玩家从一组被称为域号码的号码中选择几个。列如,可以从域号码1~47中选择5个号码;还可以从第二个区间(如1~27)选择一个号码(称为特选号码)。要赢得头奖,必须正确猜中所有的号码。中头奖的几率是选择所有域号码的几率与选择特选号码几率的乘积。例如,在这个例子中,中头奖的几率是从47个号码中正确选择5个号码的几率域从27个号码中正确选择1个号码的几率的乘积。请修改一下程序,以计算中得这种彩票头奖的几率。

#include <iostream>

long double probability(unsigned numbers, unsigned picks);

int main()

{

using namespace std;

double total, choices;

cout << "输入彩票上的选择总数和允许的选择数: ";

while ((cin >> total >> choices) && choices <= total)

{

cout << "您有 " << probability(total, choices) << " 胜算" << endl;

cout << "请输入下一个数字(输入q退出): ";

}

cout << "bye" << endl;

return 0;

}

long double probability(unsigned numbers, unsigned picks)

{

long double result = 1.0;

long double n;

unsigned p;

for (n = numbers, p = picks; p > 0; n--, p--)

{

result = result * n / p;

}

return result;

}

源代码:

#include <iostream>

long double probability(unsigned numbers, unsigned picks);


int main()
{
	using namespace std;

	double total_one, choices_one,total_two,choices_two=1;
	cout << "输入彩票上的选择总数和允许的选择数(第一区间): ";

	while ((cin >> total_one >> choices_one) && choices_one <= total_one)
	{
		cout << "输入彩票上的选择总数(第二区间): ";
		if (!(cin >> total_two))
			break;
		cout << "您获得头奖有 " << probability(total_one, choices_one) * probability(total_two, choices_two) << " 胜算" << endl;
		cout << "输入彩票上的选择总数和允许的选择数(第一区间): ";
	}
	cout << "bye" << endl;
	return 0;

}

long double probability(unsigned numbers, unsigned picks)
{
	long double result = 1.0;
	long double n;
	unsigned p;

	for (n = numbers, p = picks; p > 0; n--, p--)
	{
		result = result * n / p;
	}
	return result;
}

演示效果:


如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小天才哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值