GVA SUPPORT

Відповідь на запитання № 1306975498
Text:
	ФІО = Пінчук

 Запитання:/*
3)створити шаблон функції, яка б повертала найближче
 до середнього значення елементу масиву (так, щоб розміри
 масиву можна було міняти)
*/
#include <iostream>
#include <cstring>
#include <conio.h>
#include <math.h>

using namespace std;
template <class T>

T double_serzv(T *mas,int n){
// функція повертає середнє арифметичне
       T sum=0;
       for   (int i = 0 ; i < n ; i++){
             sum+=*(mas+i); // сумуємо
       }
       return sum/n; // ділимо і повертаємо
}

template <class T>
T naiblijche_do_ser(T *mas,int n){
// функція повертає середнє арифметичне
       T sr=double_serzv(mas,n);
       int pi=0;                        // індекс, під яким зберігається можливе найближче до середнього значення
       T eps=fabs(sr-(*(mas+pi))); // це значення, різниця від середнього арифметичного до поточного можливого найближчого значення до середнього арифметичного

       for   (int i = 1 ; i < n ; i++){// щукаємо далі з індексу 1, так як 0 - ми все опрацювали
             if (fabs(sr-(*(mas+i)))<eps){ // якщо найдеться іще ближче число до середнього
                eps=fabs(sr-(*(mas+pi))); //записуємо...
                pi=i;
             }
       }
       return *(mas+pi); // повертаємо найближчий до середнього елемент за індексом в масиві
}
int main()
{
 int n;
 cout<<"Enter N = ";
 cin >> n;
 double *mas=new double  [n];
 for (int i = 0 ; i < n ; i++)
 {
     cout<<"Enter ["<<i<<"] = ";
     cin>>(*(mas+i));
 }
 cout<<"AVERAGE is "<<double_serzv(mas,n)<<endl;
 cout<<"RESULT is "<<naiblijche_do_ser(mas,n)<<endl;
 delete []mas;
 system("PAUSE");
}


====================================	
Ваша відповідь