Я новичок в использовании C. У меня есть программа, которая принимает два вектора, находит их различие в виде вектора и вычисляет его длину. Я пытаюсь обобщить это так, чтобы любые векторы любого размера могли быть вставлены без каких-либо других изменений. Я нахожу проблему при попытке ввести размер вектора во внешнюю функцию, модуль . Он будет печатать случайные числа в правильном формате, в основном ноль, поэтому истинная ошибка неясна. Что я делаю не так?
int i, l;
float modulus(float vec[], int length);
void main() {
/* declare and initialise a position vector */
float positionVector1[] = {6.0, 3.0};
float positionVector2[] = {3.0, 2.0};
int L = sizeof(positionVector1);
float positionVector[L];
for (i = 0; i < L; i++) {
positionVector[i] = positionVector2[i] - positionVector1[i];
}
float len;
len = modulus(positionVector, L);
printf("length is %.2e\n", len);
}
float modulus(float vec[], int length) {
float mod = 0.0;
for (i = 0; i < length; i++) {
mod = mod + (vec[i] * vec[i]);
}
mod = sqrt(mod);
}