Ваши комментарии к заголовку и коду предполагают, что вы думаете, что программа (всегда) возвращает целое число, наиболее близкое к среднему значению ее входных данных.Это не.Он возвращает вход , который является ближайшим к среднему значению всех входов.Конечно, это будет целое число, если все входные данные являются целыми числами, но вы вводите их как числа с плавающей запятой, поэтому они не обязательно должны быть целыми числами.Следовательно, выходные данные не обязательно должны быть единичными.
Например, если эти входные данные представлены в вашей программе:
1 2 2 2 2 1,8
, он примет их и выдаст
Ближайшее - 1.800000
.Кроме того, выходной сигнал не обязательно должен быть особенно близким к среднему.Например, попробуйте эти входные данные:
1 1 1 1 1 1000000
.Вы должны получить
Ближайший 1.000000
.Это целое число, но оно не соответствует среднему значению примерно 166666.
Что касается вопросов, встроенных в код:
closest = num[0]; //why are we even using this??? //initialize?
Цикл, следующий сразу за этимв коде ищет входы, которые ближе к среднему, чем closest
.Это бессмысленно, если closest
не было присвоено значение, и это потенциально может привести к неверному результату, если closest
не содержит значение, равное одному из входов.Конечно, при closest
, начинающемся с того же значения, что и num[0]
, результат будет таким же, если цикл начнет тестирование с индекса 1 вместо индекса 0.
//where is it being rounded to the closest number??
Это не округлено.В этот момент closest
уже содержит значение, равное одному из входов.Его не нужно округлять, и на самом деле округление во многих случаях даст результат, которого нет среди входных данных.