【发布时间】:2019-09-21 03:06:50
【问题描述】:
当我编译我的代码时,它可以正常编译,没有错误,但是当我运行代码时,它给出了以下错误“分段错误”,没有更多信息。但是,当我查看 Segmentation Fault 时,它通常与指针有关,而我根本没有使用过指针。
我已经检查了整件事是否有任何拼写错误,我可能会说“&”而不是“&&”等等。我也查看了错误,并重新编译了代码。
#include <iostream>
#include <vector>
std::string answer(int placement, std::vector<int> peopleInLinE, int Fifties, int twentyFives)
{
if (((peopleInLinE[placement] - 25) % (Fifties * 50)) == 0)
{
Fifties -= peopleInLinE[placement] / (Fifties * 50);
} else if (((peopleInLinE[placement] - 25) % (twentyFives * 25)) == 0)
{
twentyFives -= peopleInLinE[placement] / (twentyFives * 25);
} else if (peopleInLinE[placement] == 100)
{
if (Fifties >= 1 && twentyFives >= 1)
{
Fifties -= 1;
twentyFives -= 1;
} else if (twentyFives >= 3)
{
twentyFives -= 3;
} else {
return "NO";
}
} else {
return "NO";
}
return "YES";
}
std::string tickets(const std::vector<int> peopleInLine){
int twentyFiveS;
int FiftieS;
for (int placemenT; peopleInLine.size(); placemenT++)
{
if (answer(placemenT, peopleInLine, FiftieS, twentyFiveS) == "NO") {
return "NO";
}
}
return "YES";
}
int main() {
std::cout << tickets({25, 50, 100, 25});
return 0;
}
之所以有几个变量有随机大写,是因为我不知道是不是说这两个东西拼写完全一样,所以它们是一样的东西,所以我改了拼写试试想办法解决。
此代码用于 Codewars 上的“Vasya - Clerk”挑战,我包含了整个文件,因为我不知道错误可能出在哪里。
我得到的唯一错误信息是“Segmentation Fault”,没有其他解释。
【问题讨论】:
-
这是什么
for (int placemenT; peopleInLine.size(); placemenT++)? -
你是在问为什么它有奇怪的大写字母?
-
placemenT也有不确定值,因为你没有初始化它,如果peopleInLine.size() > 0还有一个无限循环,你可能想要for (int placemenT = 0; placemenT < peopleInLine.size(); placemenT++) -
我看到@user3365922 非常感谢。
-
我在编译它时收到许多关于未初始化变量的警告。先解决这些问题,它可能会起作用。