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