Создание шаблона функции,рассчитывающей скалярное произведение двух векторов в пространстве размерности 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;
    }
    

Ответы (0 шт):