Найти среднее арифметическое таких значений функции, которые имеют дробную часть, меньшую 0.5. - C (СИ)
Формулировка задачи:
Написал программу построения таблицы значений функции. Нужно дописать: Среднее арифметическое таких значений функции, которые имеют дробную часть, меньшую 0.5.
помогите пожалуйста..
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define L -5.0
#define R 5.0
#define H 0.1
double F(double x)
{
return 15.2*sin(0.98*x)+8.3*cos(0.37*x);
}
int main()
{
double x,y;
for (x = L; x <= R; x += H)
{
y=F(x);
printf("%10.4f %10.4f\n",x,y);
}
getch();
return 0;
}Решение задачи: «Найти среднее арифметическое таких значений функции, которые имеют дробную часть, меньшую 0.5.»
textual
Листинг программы
int main()
{
double x,y;
double sum = 0; int k = 0;
double drob = 0; double temp=0;
for (x = L; x <= R; x += H)
{
y=F(x);
printf("%10.4f %10.4f\n",x,y);
drob = abs(modf(y, &temp));
if (drob<0.5){
k=k+1;
sum=sum+y;
}
}
printf("Needed average: %10.4f\n", sum/k);
getch();
return 0;
}
Объяснение кода листинга программы
- Объявлены переменные: x, y, sum, k, drob, temp
- Задаются начальные значения переменных: x = L, y = F(x), drob = abs(modf(y, &temp)), k = 0, sum = 0
- Выполняется цикл for, который начинается с x = L, x <= R, x += H. Значения x и y меняются на F(x) и x соответственно.
- Вычисляется значение drob. Если оно меньше 0.5, то к переменной k прибавляется 1, а к переменной sum прибавляется значение y.
- После выполнения цикла for выводится сообщение
Needed average: sum/k - Получается, что программа находит среднее арифметическое значений функции, которые имеют дробную часть, меньшую 0.5.