【发布时间】:2020-01-14 19:38:55
【问题描述】:
我正在尝试将三个数字的块相互比较,以制作一个新的输出文件,其中仅包含满足该条件的那些:块的第一个数字小于第二个数字且小于第三个数字,第二个数字在块必须大于第一个但小于第三个。
这是我的输入文件代码:
int main()
{
ofstream outfile ("test.txt");
outfile << "123 456 789 123 123 432 \n 123 243 " << endl;
我想把它分成三个块,比如“123”、“456”等等,以便只在新的输出文件中写入满足要求的那些。我决定将整个文件转换成一个整数向量以便能够比较它们。
char digit;
ifstream file("test.txt");
vector<int> digits;
while(file >> digit) {
digits.push_back(digit - '0');
}
我想比较它们的方法看起来像这样:
bool IsValid(vector<int> digits){
for(int i=0; i<digits.size(); i++){
if(digits[0] < digits[1] & digits[0] < digits[2] & digits[1]<digits[2])
return true;
else{
return false;
}
}
}
但是这只会比较第一个块,你会做不同的吗?还是我应该继续做向量的想法
【问题讨论】:
-
你为什么要使用
vector?这是一个简单的除法和模数问题。 -
@PaulMcKenzie 还有哪些其他选择?
-
如果您只想查看从左到右的数字是否按升序排列,则无需使用
vector。这就是你对问题的描述似乎在说什么。 -
& -> && in IsValid()