Я сделал программу, которая на самом деле хороша и работает, и в ней есть определяемая пользователем функция, но есть только одна проблема, как показано в заголовке, я получил целочисленный вывод вместо двойного, я не знаю почему, и я все перепробовал Я знаю, но в итоге потерпел неудачу.
Почему результатом функции является целое число, а не двойное?
Напишите функцию
main()
, которая предлагает пользователю ввести три целых числа, нижнее и верхнее, а затем вызывает функциюaverage()
:double average( int howManyNumbers, int lower, int upper)
, которая генерируетhowManyNumbers
случайные целые числа в нижнем и верхнем диапазоне включительно. Затем функция находит и возвращает среднее значение случайно сгенерированных целых чисел. Функция должна генерировать разные наборы значений для каждого прогона.
А это код моей программы:
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<iomanip>
using namespace std;
int main ()
{
int number,lower,upper;
double average (int , int , int);
cout<<"Enter number, lower, upper: ";
cin>>number>>lower>>upper;
cout<<showpoint<<fixed;
cout<<"The average of the "<<number<<" random integers is"<<average(number,lower,upper );
return 0;
}
double average (int howManyNumbers, int lower, int upper)
{
int i;
double avg,sum=0;
for (i=0;i<howManyNumbers;i++)
{
srand(time(0));
sum=sum+(lower+rand()%(upper-lower+1));
}
avg=(sum/howManyNumbers);
return avg;
}
(lower+rand()%(upper-lower+1))
вся эта арифметика включает только целые числа. - person user657267   schedule 03.12.2015(double)3.0
выводится как3
, но внутренне это все равноdouble
- person Basile Starynkevitch   schedule 03.12.2015average(100,0,100 )
дает целое число.avg=(sum/howManyNumbers);
не является целочисленной арифметикой. - person DarkZeros   schedule 03.12.2015avg=(sum/(double)howManyNumbers);
Когда вам нужен результат с плавающей запятой, убедитесь, что все значения, с которыми вы работаете, также являются с плавающей запятой. Арифметические операторы с целыми числами могут привести к усечению всего до целого числа перед неявным преобразованием обратно в число с плавающей запятой. - person RyanP   schedule 03.12.2015