Как ввести оператор if внутри цикла for?

Я пытаюсь рассчитать среднее значение 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);
scanf ("%d", num1); => scanf ("%d", &num1);
Jean-François Fabre 09.04.2019 14:06

Ваша проблема в том, что делать, если пользовательский ввод больше 10 чисел?

aragon 09.04.2019 14:06

В чем проблема с кодом, который вы показываете? Какой у Вас вопрос? Напишите свой вопрос в в самом тексте вопроса, а в заголовке оставьте краткое изложение вашей проблемы. Пожалуйста, найдите время, чтобы прочитать о как задавать хорошие вопросы, а также контрольный список этого вопроса. А также, пожалуйста, узнайте, как создать файл Минимальный, Полный и проверяемый пример.

Some programmer dude 09.04.2019 14:08

Как новый в c начните проверять возвращаемое значение scanf. Другая проблема с вашим кодом заключается в том, что вы назначаете в num1 неинициализированный num2. Таким образом, вы потеряли все свои данные.

aragon 09.04.2019 14:10

другая проблема с вашим кодом заключается в том, что average = sum / 5; даст вам усеченное деление вместо деления с плавающей запятой, потому что sum является int

phuclv 09.04.2019 14:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша первая задача — написать 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 дюжины другого, как мне кажется.

Bathsheba 09.04.2019 14:11

Другие вопросы по теме