带有兰特号码的彩票程序
lottery program with rand number
我正在尝试编写程序,为彩票生成三位数,用户输入三位数。
- 如果用户输入与彩票完全匹配,则奖金为10000美元
- 如果用户输入与彩票匹配,则奖励为3000美元
- 如果用户输入中的一位数字与彩票中的一个数字匹配,则奖励为1000美元
但我没有得到任何正确的结果。
h1=rand() % 10;
int h2=rand() % 10;
int h3=rand() % 10;
cout<<"Enter three digite numbern";
cin>>n1>>n2>>n3;
if(n1==h1&&n2==h2&&n3==h3)
cout<<"you win 10.000 awardn";
else
if(n1==h1||n1==h2||n1==h3&&n2==h1||n2==h2||n2==h3&&n3==h1||n3==h2||n3==h3)
cout<<"you win 3,000n";
else
if(n1==h1||n1==h2||n1==h3||n2==h1||n2==h2||n2==h3||n3==h1||n3==h2||n3==h3)
cout<<"you win 1,000n";
else
cout<<"you don't win anything sorryn";
您在第二个和第三个if块中的测试条件不正确。
if(n1==h1||n1==h2||n1==h3&&n2==h1||n2==h2||n2==h3&&n3==h1||n3==h2||n3==h3)
在这种测试条件下,存在许多问题。
首先,这很容易被短路。如果n1与h1或h2匹配,则不测试该条件的其余部分。这同样适用于此后的每一次比较,请记住&;其中其两侧的两个条件对于短路都需要为真。
假设我们放置了防止这种情况发生的括号,那么您的条件对于任何顺序的所有三个匹配都将为真。
看到这两个问题,最好修改逻辑,因为这会使第三个块的操作变得多余。您的第三个块将针对特定的输入组合运行,而不是您期望它执行的
我认为编写程序逻辑的更好方法是单独比较每个字符,并为找到的匹配数保留一个计数器。
int c=0, win;
if(n1==h1||n1==h2||n1==h3) c++;
if(n2==h1||n2==h2||n2==h3) c++;
if(n3==h1||n3==h2||n3==h3) c++;
if(c==3)
{
//Check order of digits
if(n1==h1&&n2==h2&&n3==h3) win = 10000;
else win=3000 //All digits same but not in order
}
else if(c==2)
win=3000
else if(c==1)
win=1000
else
win=0
if(win) cout<<"You win "<<win<<"n";
else cout<<"you dont win anythingn";
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 一个创建彩票游戏的程序,该彩票游戏可以有效地创建 10 套而没有任何重复?
- 我正在设计一个程序,可以计算如果您玩了几个刮刮乐彩票游戏,获利的几率
- 彩票应用程序,代码有问题
- 带有兰特号码的彩票程序
- 彩票程序没有重复功能