Для начала, есть несколько ошибок в этой функции:
double roundnum(double x);
- Эта функция должна возвращать
double
, а вместо
- Понятно, что вы не поняли, как используются параметры. Когда вы вызываете
roundnum(n)
, вы передаете локальную копию n, указанную в теле main, переменной x, которая является параметром roundnum()
. double n
из main()
не имеет ничего общего с double n
из roundnum()
. В основном в roundnum()
вы используете неинициализированную переменную, которая является логической ошибкой. Число, которое вы хотите округлить, в основном x
.
Это функция с исправленными выше ошибками:
double roundnum(double x)
{
double number = (x + .5);
return number;
}
Теперь давайте поговорим о том, почему эта функция округления неверна с точки зрения логики. Вы хотите 2-десятичный раунд, но в действительности вы просто увеличиваете любое число с 0.5
. Так что, если я введу в качестве ввода число 3.150
? Он уже округлен, но функция вернет 3.65
, что является ошибкой. Я не скажу вам, как решить эту проблему, считайте это домашней работой;)