graph — C ++ Программа, которая находит лучшего персонажа

Мне нужно сделать программу, которая принимает:

  1. Общее количество символов для сравнения
  2. Персонаж для оценки
  3. Сравнение между персонажем для оценки и другими персонажами

Вывод программы должен быть «ДА», если выбранный символ является наибольшим, и в противном случае «НЕТ».

Входные данные получены из ‘input.txt’, где:

  1. Первый номер, n, это количество символов
  2. Второй номер, k, выбранный символ
  3. Каждая последующая строка представляет собой сравнение символов с большим слева и меньшим справа
  4. Завершающая строка, содержащая только «0»

Но как я могу сравнить значения, когда есть более 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";
}

-2

Решение

Предполагая, что каждая из ваших строк (после первой) является сравнением с большей слева. Ваше решение заключается в том, чтобы прочитать все строки и посмотреть, 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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]