找到最大字符的C ++程序

时间:2015-12-11 11:41:00

标签: c++ graph comparison max directed-graph

我需要制作一个接收的程序:

  1. 要比较的字符总数
  2. 要评估的角色
  3. 要评估的角色与其他角色之间的比较
  4. 如果所选字符最大,则程序的输出应为“YES”,否则为“NO”。

    输入来自'input.txt',其中:

    1. 第一个数字n是字符数
    2. 第二个数字k是所选字符
    3. 每个后续行都是一个字符比较,左边是大字,右边是小字符
    4. 仅包含'0'
    5. 的终止行

      但如何在超过2个字符时比较值?

      例如,此'input.txt'应为“YES”,因为k为'1','1'大于其他2个字符:

      3 1
      1 2
      1 3
      0
      

      此示例应导致“NO”,因为k仅大于1个字符:

      3 2
      2 3
      0
      

      以下是我的代码,我打算使用xy来表示比较行上的第一个和第二个字符:

      #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";
      }
      

1 个答案:

答案 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;
}

如果isKGreatesttrue,那么您需要做的就是输出“是”,如果isKGreatestfalse,则输出“否”。我在这里做了一个例子:http://ideone.com/YMk5mk