C++硬币翻转程序错误
C++ Coin flip program error
我正在尝试在掷硬币时计算连续的人头数。不幸的是,我的连续人头计数器没有正确递增。有什么想法吗?代码和样本输出如下:
#include <iostream>
#include <string>
#include "random.h"
using namespace std;
string FlipCoin (string flip);
int main() {
string flip;
int consecutiveHeads = 0;
int totalFlips = 0;
while (consecutiveHeads<3) {
totalFlips++;
if (FlipCoin(flip) == "heads") {
consecutiveHeads++;
} else {
consecutiveHeads = 0;
}
cout <<totalFlips<<" "<< FlipCoin(flip) << " " << consecutiveHeads <<endl;
}
cout <<"It took "<< totalFlips <<" coin flips to get 3 consecutive heads."<< endl;
return 0;
}
string FlipCoin(string flip) {
if (randomChance(0.50)) {
return "heads";
} else {
return "tails";
}
}
输出:
1 heads 1
2 tails 0
3 tails 1
4 heads 2
5 heads 3
It took 5 coin flips to get 3 consecutive heads.
每次调用FlipCoin(flip)
都会生成一个新的随机数。你叫它两次,所以它产生了两个不同的随机数。您应该调用FlipCoin(flip)
一次,并将其存储在一个变量中。
...
string result = FlipCoin(flip);
if (result == "heads") {
consecutiveHeads++;
} else
consecutiveHeads = 0;
}
cout <<"It took "<< totalFlips <<" coin flips to get 3 consecutive heads."<< endl;
...
正如其他人提到的,main
中的flip
变量未初始化且未使用。最好删除它。建议您在FlipCoin
函数中传递flip
作为引用(使用&
)。这肯定有用处,但没有必要。最简单的修订可能是:
string FlipCoin() {
if (randomChance(0.50)) {
return "heads";
} else {
return "tails";
}
}
PS:如果从函数中删除flip
参数,则还必须将每次出现的FlipCoin(flip);
替换为FlipCoin();
问题是在每次迭代中调用FlipCoin()
两次:第一次是与"heads"
进行比较,然后再次显示发生了什么。你需要调用它一次,并将其放入一个变量中:
while (consecutiveHeads<3) {
totalFlips++;
string curFlip = FlipCoin(flip);
if (curFlip == "heads") {
consecutiveHeads++;
} else {
consecutiveHeads = 0;
}
cout <<totalFlips<<" "<< curFlip << " " << consecutiveHeads <<endl;
}
附言:FlipCoin()
的论据是什么?
每次调用FlipCoin
函数时都会翻转。因此,在while
函数的每次迭代中翻转两次。您可以考虑通过flip
作为FlipCoin
:的参考
#include <iostream>
#include <string>
#include "random.h"
using namespace std;
void FlipCoin (string &flip);
int main() {
string flip;
int consecutiveHeads = 0;
int totalFlips = 0;
while (consecutiveHeads<3) {
totalFlips++;
FlipCoin(flip);
if (flip == "heads") {
consecutiveHeads++;
} else {
consecutiveHeads = 0;
}
cout <<totalFlips<<" "<< flip << " " << consecutiveHeads <<endl;
}
cout <<"It took "<< totalFlips <<" coin flips to get 3 consecutive heads."<< endl;
return 0;
}
void FlipCoin(string &flip) {
if (randomChance(0.50)) {
flip = "heads";
} else {
flip = "tails";
}
}
相关文章:
- 程序崩溃并显示"std::out_of_range"错误
- xmake总是报告:错误:无法获取cxx的程序,为什么
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 分段错误当我试图运行程序时出错
- 显示错误输出的简单数组排序程序
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 为什么程序在 c++ 中迭代 emtpy 向量时会抛出运行时错误
- 在气泡排序程序中未声明错误功能
- 我在c ++矩阵计算器程序中找不到错误
- 叮当格式化程序多行格式配置错误
- 全局向量导致 C++ 程序结束时出现段错误
- 运行时间错误:程序跳过提示,以获取第二名和第三个名称
- Glibc 2.7 配置错误程序太旧
- 运行时错误:程序已停止响应
- OpenCV for Android:在 PATH 中找不到错误程序"sh"
- C++中的 scanf 错误 - 程序没有响应
- c++语法错误:程序以非零状态退出
- 运行时错误C++程序:检测到glibc,munmap_chunk(),指针无效
- libxml2错误程序c++