Создание шаблона функции,рассчитывающей скалярное произведение двух векторов в пространстве размерности n
Задача такая:
создать шаблон функции, рассчитывающей скалярное произведение двух векторов в пространстве размерности n. В качестве параметров шаблона использовать тип элементов вектора T и его размер n. Продемонстрировать работу шаблона для векторов с различными типами элементов и размерами.
Проблема:
в вызове функции с типом double, вместо того,чтобы вывести число типа double, она выводит целочисленное, в данном случае число 2,не могу понять, почему оно округляется, с типами вроде бы всё верно.
#include <iomanip>
#include <iostream>
#include <ctime>
using namespace std;
template<class Type>
Type ScalarProduct(Type v1[],Type v2[],int n)
{
int i = 0, sum = 0;
for (i=0; i < n; i++)
sum += v1[i] * v2[i];
return sum;
}
int main()
{
int n;
double vect1[] = { 1.1 };
double vect2[] = { 2.1 };
int vect3[]={1,2,3,4}, vect4[]={3,2,1,4 };
cout << ScalarProduct <double>(vect1,vect2,1) << "\n";
cout << ScalarProduct <int>(vect3,vect4,4)<<"\n";
cin.get();
return 0;
}