我事先尝试过这样做,似乎没有任何效果。我只是想创建一个函数,并且在dotProduct下有明显的int i错误。有人知道为什么会这样吗? `
#include <iostream>
#include <string>
using namespace std;
int main()
{
int inp,i,v,array1,array2,oo,test1;
// Checking the input of the array size
do {
cout << "Enter Array size: ";
cin >> inp;
if (inp <= 0)
cout << "Incorrect array size. Try Again \n";
} while (inp <= 0);
int *arr1;
int *arr2;
arr1 = new int[inp];
arr2 = new int[inp];
// Populating the arrays
cout << "-----Begin Entering Array Elements-------- \n";
cout << "Array 1: \n";
for (i = 0; i <= (inp - 1); i++)
{
cout << "Enter element: ";
cin >> v;
arr1[i] = v;
}
cout << "Array 2: \n";
for (i = 0; i <= (inp - 1); i++)
{
cout << "Enter element: ";
cin >> v;
arr2[i] = v;
}
// The dot product function
int dotProduct(int *array1, int *array2, int size);
{
int sum = 0;
for (int i = 0; i <= (inp - 1); i++)
{
oo = ((*array1[i]) * (*array2[i]));
sum = sum + oo;
}
}
test1 = dotProduct(arr1, arr2, inp);
cin.get();
cin.ignore();
return 0;
}
答案 0 :(得分:3)
您的功能以分号结束:
int dotProduct(int* parray1, int *parray2, int size);
因此仅作为声明。它在main()
函数内部也是错误的。下标运算符[]
已经进行解除引用,因此无需解除引用两次,应该是:
array1[i] * array2[i]
最后,您的函数需要返回sum
,for
条件需要更改为:
for (int i = 0; i < size; i++)
你应该delete
为你的主要内容分配给arr1;
和arr2
的内存。以下是该函数的外观:
int dotProduct(int *array1, int *array2, int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += array1[i] * array2[i];
}
return sum;
}