c++ - 为什么有些代码可以工作 HackerRank 而不是 Xcode
问题描述
下面的代码在 HackerRank 上运行良好,但在 Xcode 11 上却不行。我怀疑是 while 循环导致了这个问题。有什么我想念的吗?
这不是代码第一次在 HackerRank 上运行,但不是 Xcode。我通常在提交学习之前在 Xcode 上工作。我想确保我在 Xcode 上编写的代码适用于任何编译器。我会很感激一些见解。
int main(){
int n, i=0;
cin >> n;
int * A = new int[n];
while(cin >> A[i++]);
while(cout << A[--n] << ':' && n);
delete[]A;
return 0;
}
问题是:用户需要输入数组的大小,并且数组的元素位于同一行,用空格隔开。程序将以相反的顺序返回数组。
样本输入:4(输入)
样本输入:1 2 3 4(输入)
样本输出:4 3 2 1
当我尝试在 Xcode 上运行时,它似乎在我手动输入值后永远循环。光标只是闪烁。我必须强制退出。我没有收到任何错误。请参阅下面链接中的图片。 Xcode 调试区图片
解决方案
while(cin >> A[i++]);
将永远等待下一个输入值,直到遇到输入结束或无效输入值。
这将适用于hackerrank,因为它们将在带有输入值的文件中进行管道传输,因此eof
当您尝试读取太多值时 cin 会报告。
正如您确切知道您期望有多少输入一样,最简单(也是最安全的防止数组越界访问)的解决方案是添加 s 检查您已读取的输入数量:
while(i < n && cin >> A[i++]);
推荐阅读
- sql - 在 Postgresql 中检查条件的约束
- c++ - 试图理解调车场算法
- neo4j - 是否可以使用 apoc.path.spanningTree() 中的属性过滤关系?
- assembly - 如何在 RISC-V 汇编中使用向量运算
- string - 如何查看visualvm中的所有字符串对象?
- javascript - 如何让 Web Worker 在执行计算的同时接收新数据?
- docker - AWS - Python 3.6 不支持 awslogs-agent-setup.py
- python - 从python中的xgboost中提取决策规则
- python - 将 pd.read_sql_query 的结果分配给数据框列表
- swift - 我们如何使用 hitTest 处理多个 QR 码检测并在其上添加节点