我需要制作一个接收的程序:
如果所选字符最大,则程序的输出应为“YES”,否则为“NO”。
输入来自'input.txt',其中:
n
是字符数k
是所选字符但如何在超过2个字符时比较值?
例如,此'input.txt'应为“YES”,因为k
为'1','1'大于其他2个字符:
3 1
1 2
1 3
0
此示例应导致“NO”,因为k
仅大于1个字符:
3 2
2 3
0
以下是我的代码,我打算使用x
和y
来表示比较行上的第一个和第二个字符:
#include <iostream>
#include <fstream>
using namespace std;
void main(){
int n;
char k;
char x;
char y;
char max=1;
unsigned char end;
ifstream input;
input.open("input.txt");
input >> n;
input >> k;
while (end!=0){
/*Here is the part I want an advance
the program needs to compare many character ids (almost 50 of them),
but I cannot imagine how to do that*/
end = 0;
}
ofstream output;
output.open("output.txt");
if (k == max)
output << "YES";
else
output << "NO";
}
答案 0 :(得分:1)
假设您的每一行(在第一行之后)与左侧的较大行进行比较。您的解决方案基本上是阅读所有行,并查看k
是否是第二个字符。根据您的第二个示例,如果每个字符的比较不可用,则默认响应为“NO”,因此您还需要计算行数。一种方法是:
bool isKGreatest = true;
char first;
char second;
while(input >> first >> second) {
n--;
if(second == k){
isKGreatest = false;
break;
}
}
if(n > 1) {
isKGreatest = false;
}
如果isKGreatest
为true
,那么您需要做的就是输出“是”,如果isKGreatest
是false
,则输出“否”。我在这里做了一个例子:http://ideone.com/YMk5mk