У меня есть этот код в расчете евклидова расстояния. Но я не знаю, почему у меня эта ошибка. 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)
Вы не объявили свою функцию должным образом. Аргументы не соответствуют синтаксису c ++. Пытаться
double dist(double array1[4], double array2[4])
если вы заранее знаете, что будете передавать только массивы размера 4. Если значение может измениться, но известно во время компиляции, вы можете использовать шаблон функции
template <size_t Size>
double dist(double (array1&)[Size], double (array2&)[Size])
Или, если значение может быть определено во время выполнения, и вы можете использовать STL, просто используйте std::vector
s.
Примечание: непроверенный код написан на планшете.
Редактировать:
Почти забыл упомянуть, что, в отличие от java, если я правильно помню, примитивный тип массива C ++ (см. Также комментарии Кита ниже и ссылку на превосходное объяснение по этому вопросу) делает не иметь методы (функции-члены), связанные с ним. Заявления как array1.size()
не имеет никакого смысла в примитивных типах. Конечно, они вам не нужны, если размер жестко закодирован. В противном случае используйте std::vector
,
Других решений пока нет …