如何解决为什么我的C ++代码不接受输入?我的代码有什么问题?
我目前正在学习C ++,并且是编程的新手。我遇到一个问题并尝试解决,但最终结果不理想。然后在python导师的帮助下,我尝试可视化了我的代码的执行情况,即使在运行 cin >> q 之后,执行下一条我尝试在其中尝试的语句时,它也不会接受输入并显示错误使用 q 。
请,任何人都可以告诉问题出在哪里以及导致这种错误的原因吗?
Click here to see the problem I tried solving
#include <iostream>
#include<vector>
using namespace std;
int main() {
int q,t1,t2;
vector<int> v;
cin>>q;
while(q--){
if(cin >> t1>>t2){
if(t1==0)
{
v.push_back(t2);
}
else if(t1==1)
{
cout << v[t2] <<"\n";
}
}
else if(cin >> t1){
if(t1==2)
v.pop_back();
}
}
return 0;
}
Error I got while visualizing my code in python tutor
解决方法
当您说LINQ
无效时,我不知道您的意思。您的代码中没有任何东西会使它不起作用。
但是您的代码有错误。这段代码
cin
假设您可以尝试从一行中读取两个数字,如果不行,请返回并尝试从同一行中读取一个数字。 if(cin >> t1>>t2){
if(t1==0)
{
v.push_back(t2);
}
else if(t1==1)
{
cout << v[t2] <<"\n";
}
}
else if(cin >> t1){
if(t1==2)
v.pop_back();
}
不能那样工作,如果您编写cin
,程序将从需要查找的两个行中读取两个数字。
这里是正确编写代码的方法。
cin >> t1>>t2
看看效果如何?阅读第一个数字,然后根据需要分别阅读第二个数字。使用此代码,您仍然可以在同一行上输入两个数字。
,根据Ala在其链接中提供的测试输入,即:
8
0 1
0 2
0 3
2
0 4
1 0
1 1
1 2
正确的输出应该是
1
2
4
上面的程序将产生2
。
这是因为在代码中每次出现\n
和cin
都会刷新cout
的缓冲区,并且在用户仍然输入数字的同时输出输出。
为避免这种情况,并在最终程序中获得所有输出,我们只需将输出推入第二个vector
,然后在末尾cout
推入其内容:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int q,t1,t2;
vector<int> v,w;
cin >> q;
while(q--){
cin >> t1;
if (t1 == 0)
{
cin >> t2;
v.push_back(t2);
}
else if (t1 == 1)
{
cin >> t2;
w.push_back(v[t2]); // new
}
else if (t1 == 2)
v.pop_back();
}
// new
for (int i = 0; i != v.size(); ++i)
cout << w[i] << endl;
return 0;
}
这将产生正确的输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。