我想继续输入整数到P1向量,直到输入这个例子'q'或'Q'的断点。一旦满足休息条件,运行时的程序会变成无限循环。关于解决方法的任何想法,我只能看到,因为'q'或'Q'是一个字符,当while循环运行时,整数向量将此作为输入,此时无限循环?
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
int main()
{
//Declaring Polynomial 1 and 2
vector<int> P1;
vector<int> P2;
int x = 0;
int y = 0;
while (x != 'q'||x != 'Q') {
cout << "Please enter in the first polynomial one value at a time (Press Q when done)...";
cin >> x;
P1.push_back(x);
}
//Also tested with a do while same problem
/*do
{
cout << "Please enter in the first polynomial one value at a time (Press Q when done)...";
cin >> x;
P1.push_back(x);
} while (x != 'q');*/
//Ignore this is for next part of program
vector<int> Res((P1.size() + P2.size()) + 1);
cout << P1.size() << "," << P2.size() << "," << Res.size();
return 0;
}
答案 0 :(得分:2)
(x!='q'|| x!='Q')&lt; ----这里是一个错误,显然总是如此:当x == q - &gt;是的,因为(x!='Q')== true,反之亦然。改变||到&amp;&amp;。
答案 1 :(得分:2)
条件:
(x != 'q' || x != 'Q')
总是true
导致无限循环。为什么会有更详细的信息:
x
整数变量初始化为0
。然后,检查x
是否与'q'
不同,111
表示整数值x != 'q'
。它不等于该值,因此true
的表达式为x
。然后检查'Q'
是否不等于85
字符,表示整数值x != 'Q'
。它不等于该值,因此true
的表达式也是(true || true)
。我们最终的条件为true
,始终为0
。
积分值可隐式转换为布尔值,其中false
代表true
,任何其他数字代表char c = 'y';
while (std::cin && (c == 'y' || c == 'Y')) {
// do work
std::cout << "Do you want to repeat the input? y / n?";
std::cin >> c;
}
。尝试这样的事情:
"stdafx.h"
据说你不需要<p>You should select at least one photo</p>
标题。
答案 2 :(得分:0)
首先我认为你不应该使用int x
第二次就像罗恩所说,将||
更改为&&
无论如何,罗恩举了一个例子,它有效。