为什么某些代码可以工作HackerRank但不能工作Xcode

时间:2019-12-28 05:30:03

标签: c++ xcode while-loop

下面的代码在HackerRank上工作正常,但在Xcode 11上却不能正常工作。我怀疑while循环引起了问题。有什么我想念的吗?

这不是第一次在HackerRank上运行代码,但不是Xcode。我通常在提交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 debug area image

1 个答案:

答案 0 :(得分:0)

while(cin >> A[i++]);

将永远等待下一个输入值,直到遇到输入结尾或无效的输入值为止。

这将适用于hackerrank,因为它们将使用输入值传递到文件中,因此当您尝试读取太多值时,cin将报告eof

正如您确切知道的那样,您期望最简单(也是最安全的方法来防止越界访问数组)的解决方案是添加s检查您已阅读了多少输入:

while(i < n && cin >> A[i++]);