如何比较int数[1]的值与数[2] c ++

时间:2016-12-14 08:34:20

标签: c++ numbers

我需要创建一个接受5个输入的程序,然后我应该显示5个输入的最高值。但是有一个问题,我需要将number[0]的值与number[1]进行比较,以获得最高可用数量。而且,我需要确保如果用户输入与之前相同的号码,则不应接受该号码并告诉用户输入另一个号码。这就是我的目标......

int i,number[5],highest,max = number[i] + 1;    
int main(){
clrscr();
for(int i=0; i<5; i++){
    cout<<"\nEnter number :";
    cin>>number[i];
    if(number[i] > max){
        cout<<"\nHighest number is: "<<number[i];
    }
    else if (number[i] == number[i]){
        cout<<"\nDo not repeat the same number twice!";
        i=i-1;
    }
}

4 个答案:

答案 0 :(得分:0)

还要注意,else if (number[i] == number[i])总会触发,因为您要将号码与itselfe进行比较。

答案 1 :(得分:0)

您的代码有很多错误。这是写这个的一种方式。

#include <iostream>

int main() {
  // Loop iterators
  unsigned int i = 0;
  unsigned int j = 0;

  // Data storage -- expecting only positive values.
  unsigned int number[5];
  unsigned int max = 0;  
  bool duplicate;

  // No incrementation here, as we want to skip invalid cases
  for (i = 0; i < 5; ) {
    duplicate = false;
    std::cout << "\nEnter number: ";
    std::cin >> number[i];

    // Check that we don't have the same number in twice
    for (j = 0; j < i; ++j) {
      if(number[i] == number[j]) { 
        std::cout << "\nDo not repeat the same number twice!" << std::endl;
        duplicate = true;
      }
    }

    // If a duplicate has been found, skip the rest of the process.
    if (duplicate) {
      continue;
    }

    // Is this a new maximum?
    if (number[i] > max) {
      max = number[i];
    }
    ++i;
  }

  std::cout << "Highest number is : " << max << std::endl;
  return 0;
}

答案 2 :(得分:0)

检查std::cin >>的结果:您可能会收到无效的输入(例如if(! std::cin >> number[i]) { std::cout << "wrong input received"; return -1; }

使用最小值初始化您的最大值:std::numeric_limits<int>::min();因此第一个数字将始终是第一个最大值。您还应该在输入更高时更新max。

如果您只需要检查前一个值,请检查i是否为零(没有先前的值),然后将值[i]检查为值[i-1]。但是,如果您需要所有唯一编号,则应检查循环中的所有先前编号。

仅在循环之后输出最大值(循环内部仅用于调试)

答案 3 :(得分:0)

int i,number[5],highest,max = number[i] + 1;

因为我刚刚开始init然后i = 0. number [i] realy number [0]。 所以max = number [0] + 1 = 1。 你必须输入所有数字到数组:

for(int i=0; i<5; i++){
    cout<<"\nEnter number :";
    cin>>number[i];
}
比较之后

max = number[i] + 1;  
for(int i=0; i<5; i++){
    if(number[i] > max){
        cout<<"\nHighest number is: "<<number[i];
    }

}