Евклидово расстояние между двумя массивами, необъявленный идентификатор

У меня есть этот код в расчете евклидова расстояния. Но я не знаю, почему у меня эта ошибка. array1 and array2 undeclared ,

double dist(double x[4] array1, double y[4] array2)
{
double Sum;
double distance;

for(int i=0;i<array1.length;i++)
{
cout<<"Enter value of first coordinate";
cin >> array1[i];
cout<<"Enter value of second coordinate";
cin >> array2[i];

Sum = Sum + pow((array1[i]-array2[i]),2.0);
distance = sqrt(Sum);
}
cout << "DISTANCE: " << distance;
return distance;
}

(Программа также может быть написана на Java)

-1

Решение

Вы не объявили свою функцию должным образом. Аргументы не соответствуют синтаксису c ++. Пытаться

double dist(double array1[4], double array2[4])

если вы заранее знаете, что будете передавать только массивы размера 4. Если значение может измениться, но известно во время компиляции, вы можете использовать шаблон функции

template <size_t Size>
double dist(double (array1&)[Size], double (array2&)[Size])

Или, если значение может быть определено во время выполнения, и вы можете использовать STL, просто используйте std::vectors.

Примечание: непроверенный код написан на планшете.

Редактировать:
Почти забыл упомянуть, что, в отличие от java, если я правильно помню, примитивный тип массива C ++ (см. Также комментарии Кита ниже и ссылку на превосходное объяснение по этому вопросу) делает не иметь методы (функции-члены), связанные с ним. Заявления как array1.size() не имеет никакого смысла в примитивных типах. Конечно, они вам не нужны, если размер жестко закодирован. В противном случае используйте std::vector,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]