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");
}
====================================
|