Найдите наибольшее число, введенное пользователем, и определите, сколько раз было введено наибольшее число

#c #loops #conditional-statements

Вопрос:

У меня возникла проблема, когда пользователь должен ввести список целых чисел, найти, какое из них наибольшее среди списка целых чисел, и посчитать, сколько раз было введено это наибольшее число.

Это мой исходный код:

 int main()
{
    int i, numberOfIntegers, listOfIntegers, largest = 0, occurrence = 0;

    p("n How many integers do you want to enter? ");
    s("%i", amp;numberOfIntegers);

    p("n Input %i number of integers: ", numberOfIntegers);
    
    for (i = 1; numberOfIntegers == listOfIntegers; i  )
    {
            s("%i", amp;listOfIntegers);

            if (listOfIntegers > largest)
            {
                largest = listOfIntegers;
            }

            if (listOfIntegers == largest)
            {
                occurrence  ;
            }
    }


    p("n n The largest value is %i and the number of occurrence is %i", largest, occurrence);

    return 0;
}
 

И моя проблема в том, что моя программа не позволяет пользователю вводить номера. И если пользователь не может ввести какие-либо числа, программа не может прочитать самое большое и количество вхождений самого большого числа.

Вывод моей программы выглядит следующим образом:

 How many integers do you want to enter? 13

 Input 13 number of integers:

 The largest value is 0 and the number of occurrence is 0 
 

Правильный вывод должен быть:

 How many integers do you want to enter? 13
Input 13 number of integers: 5, 2, 15, 3, 7, 15, 8, 9, 5, 2, 15, 3, 7

The largest value is 15 and it was entered 3 times.
 

Проблема в цикле?

У меня возникают проблемы, когда дело доходит до зацикливания, поэтому было бы очень полезно, если бы кто-нибудь мог указать, где моя программа пошла не так.

Комментарии:

1. Подсказка: Когда numberOfIntegers == listOfIntegers выполняется в первый раз, какова ценность listOfIntegers ?

2. Когда listOfIntegers > largest это верно, также сбросьте occurrence .

Ответ №1:

Некоторые вопросы:

  1. угадайте, p/s-это printf/scanf ?
  2. для условия цикла «numberOfIntegers == listOfIntegers», это должно быть i
  3. Даже выше исправленная программа работать не будет . Например ,возьмите входные данные 1,3, 5, 7, ваш ответ вычислит правильный максимум, но количество экземпляров max будет неверным. (вам нужно сбросить значение, когда будет найден новый макс)
  if (listOfIntegers > largest)
            {
                largest = listOfIntegers;  occurence=1 ;
            }

  else if (listOfIntegers == largest)
            {
                occurrence  ;
            }