2016-12-14 2 views
-5

Мне нужно создать программу, которая будет принимать 5 входов, а затем я должен показать наивысшее значение 5 входов. Но есть проблема, мне нужно сравнить значение number[0] с number[1], чтобы получить максимально возможное количество. Кроме того, мне нужно убедиться, что если пользователь вводит тот же номер, что и раньше, он не должен быть принят и будет указывать пользователю ввести другой номер. Вот что я придумал, чтобы ...Как сравнить значение int number [1] с номером [2] C++

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; 
    } 
} 
+0

Пожалуйста отступы ваш код правильно. Это бельмо на глазу, как сейчас. – StoryTeller

+0

@George Он по-прежнему показывает последний вход, который я ввел, а не самый высокий номер. –

+0

@JamesBong не единственная проблема: 'max = number [i] + 1' ->' max = 0' & '(number [i] == number [i])' -> '(i> -1 && (number [i-1] == number [i]) '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' объявлен. – George

ответ

0

также позаботиться о том, что ваш else if (number[i] == number[i]) всегда будет огонь, потому что вы сравниваете число с itselfe.

+0

, так что означает 'else if (number [i] == number [i + 1]) '? –

+0

@JamesBong Nope, что приведет к неопределенному поведению – George

+0

вам нужно сравнить заданное число, которое является номером [i] со всеми введенными ранее числами. – Qerildan

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; 
} 
+0

Я использую компилятор turbo c –

+0

Тогда вы, вероятно, захотите отметить вопрос как turbo-c, а не C++. В любом случае просто замените' #include 'на' #include ' и удалите 'std ::' s. Полагаю, этого должно быть достаточно. – fzd

+1

@JamesBong : если вы не обязаны использовать turbo c, найдите что-нибудь еще (VisualStudio Express, Eclipse CDT, QtCreator). В то время как clrscr() (и другие) могут быть удобными, вы по-прежнему упускаете много того, что может предложить более современный C++. Кроме того, не просто скопируйте код, но попытайтесь понять, что вы сделали неправильно и как его можно решить. – stefaanv

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]. Однако, если вам нужны все уникальные номера, вы должны проверить все предыдущие числа в цикле.

только сделать вывод максимального значения после цикла (внутри цикла только для отладки)

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

, потому что я просто начать инициализации, то я = 0. Число [I] НАСТОЯЩЕМУ номер [0] , так макс = число [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]; 
    } 

} 
Смежные вопросы