Я пытаюсь рассчитать среднее значение 5 чисел, все они меньше 10. Любая помощь будет высоко оценена, так как я все еще нахожусь на ранних стадиях обучения.
int num1, num2;
int sum, i;
float average;
printf ("Enter five numbers to calculate the average:");
for (i = 0; i < 5; i++){
scanf ("%d", num1);
if (num1 > 10){
printf ("You can't enter this number\n");
printf ("Enter five numbers to calculate the average:");
scanf ("%d", num1);
}
else{
num1=num2;
}
sum += num2;
}
average = sum / 5;
printf ("Average is: %f", average);
Ваша проблема в том, что делать, если пользовательский ввод больше 10 чисел?
В чем проблема с кодом, который вы показываете? Какой у Вас вопрос? Напишите свой вопрос в в самом тексте вопроса, а в заголовке оставьте краткое изложение вашей проблемы. Пожалуйста, найдите время, чтобы прочитать о как задавать хорошие вопросы, а также контрольный список этого вопроса. А также, пожалуйста, узнайте, как создать файл Минимальный, Полный и проверяемый пример.
прочитайте о scanf: stackoverflow.com/questions/26247345/…, затем прочитайте о минимальный воспроизводимый пример и ericlippert.com/2014/03/05/как-отлаживать-маленькие-программы
Как новый в c начните проверять возвращаемое значение scanf
. Другая проблема с вашим кодом заключается в том, что вы назначаете в num1
неинициализированный num2
. Таким образом, вы потеряли все свои данные.
другая проблема с вашим кодом заключается в том, что average = sum / 5;
даст вам усеченное деление вместо деления с плавающей запятой, потому что sum
является int
Ваша первая задача — написать scanf("%d", &num1);
, обратите внимание на указатель. В конце концов вы также должны проверить возвращаемое значение scanf
— оно должно быть 1, если число было прочитано.
Одним из способов (не всем по вкусу) было бы переписать тело if
как
if (num1 > 10){
printf ("You can't enter this number\n");
printf ("Enter five numbers to calculate the average:");
--i;
} ...
который обращает приращение i
.
Другим способом (который я бы предпочел) было бы увеличение i
только в ветви else
и удаление i++
из третьего выражения цикла for
.
Ваше задание num1 = num2;
тоже содержит ошибки, ничего, что вы не можете решить с помощью отладчика, и вы также поймете, что вам понадобится average = sum / 5.0f;
, чтобы избежать усечения.
@Ctx: Ну, &num1
- это указатель: 6 одного и 1/2 дюжины другого, как мне кажется.
@Ctx: en.wiktionary.org/wiki/six_of_one,_half_a_dozen_of_the_other
scanf ("%d", num1);
=>scanf ("%d", &num1);