Мне нужно сделать программу, которая принимает:
Вывод программы должен быть «ДА», если выбранный символ является наибольшим, и в противном случае «НЕТ».
Входные данные получены из ‘input.txt’, где:
n
, это количество символовk
, выбранный символНо как я могу сравнить значения, когда есть более 2 символов?
Например, этот «input.txt» должен привести к «YES», потому что k
равно «1», а «1» больше, чем другие 2 символа:
3 1
1 2
1 3
0
Этот пример должен привести к «НЕТ», потому что 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";
}
Предполагая, что каждая из ваших строк (после первой) является сравнением с большей слева. Ваше решение заключается в том, чтобы прочитать все строки и посмотреть, k
когда-либо второй персонаж. Исходя из вашего второго примера, если сравнение для каждого символа недоступно, ответ по умолчанию — «НЕТ», поэтому вам также необходимо посчитать количество строк. Один из способов сделать это:
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
Других решений пока нет …