C/C++

Составить программу для выполнения задания c++, с циклом

Вычислить процентное количество значений функции Y=3cos(x+5), больших среднего арифметического на отрезке [-5; 3] c шагом 0.2.
Очень надеюсь, что я правильно понял задачу и не прое... с математикой. Я постарался написать довольно простой код и разбавил комментариями. Надеюсь, моя писанина ясна.
 #include  
#include

// если компиляция идет с онлайн компиляторов - region можно убрать
#pragma region Функции average и percentAboveAverage

// функция для вычисления среднего значения из массива
template
T average(T values[], int size) {
T sum = 0;
for (int i = 0; i < size; i++) {
sum += values[i]; // суммируем все значения массива
}
return sum / size; // возвращаем среднее значение
}

// функция для вычисления процента значений выше среднего
template
int percentAboveAverage(T values[], int size, T average) {
int count = 0;
for (int i = 0; i < size; i++) {
if (values[i] > average) {
count++; // увеличиваем количество значений выше среднего на 1
}
}
return count * 100 / size; // возвращаем процент значений выше среднего
}

#pragma endregion
int main() {
double values[40];
int index = 0;
for (double x = -5; x
С*
Самсон *******
7 794
Лучший ответ
Anton Shevchuk Небольшая поправка: size не 40, а 41, и массив должен быть values[41]. Так называемая "ошибка счета столбов". Промежутков действительно 40, а вот значений при переборе будет 41. Результата, впрочем, это небольшое изменение значения ср. арифметического не изменит :)
Anton Shevchuk И многократное прибавление вещественного шага может дать в цикле не точно 3, поэтому к 3 стоит чуть добавить, чтобы 3 точно попало в вычисляемые аргументы косинуса.
И еще одно - процент не обязан был быть целым числом, а в программе считается как целое. Ох, тяжелая штука - вычислительная математика ;)
#include <iostream>
#include <cmath>
int main(){
const double b=-5,e=3.0001,t=.2; float s=0; int k=0,p=0;
for(double x=b;x<=e;x+=t)s+=3*std::cos(x+5),p++; s/=p;
for(double x=b;x<=e;x+=t)k+=3*std::cos(x+5)>s; std::cout<<100.*k/p<<"%\n";}
Anton Shevchuk
Anton Shevchuk
99 043
 #include  
using namespace std;

double y(double x)
{
return 3 * cos(x + 5);
}

int main()
{
int c_all = 0, c_grt = 0;
double sum = 0, average;
for (int i = -50; i среднего
}
cout
Дима Мурзин
Дима Мурзин
51 416