Вектор Крест произведение в C
Я пытаюсь написать код для решения перекрестного произведения двух трехмерных векторов. Мне нужно иметь возможность вводить значения X,Y,Z вектора, а затем выводить перекрестное произведение двух векторов. Когда я запускаю программу, она возвращает нулевое значение. Спасибо за любую помощь, спасибо!
#include <stdio.h>
#include <stdlib.h>
int a,b,c;
int x,y,z;
int A[3],B[3];
int sum = 0;
int i;
void vector_product(int A[i], int B[i])
{
sum += ((b*z)-(c*y))+((a*z)-(c*x))+((a*y)-(b*x));
}
int main(void)
{
for(i=0;i<3;i++)
{
scanf("%d",&A[i]);
}
for(i=0;i<3;i++)
{
scanf("%d",&B[i]);
}
int A[3] = {a, b, c};
int B[3] = {x, y, z};
vector_product(A,B);
printf("%d\n",sum);
return sum;
}
1 ответ
Похоже, вы пытаетесь сделать a
, b
, а также c
Ссылаться на A[0]
, A[1]
, а также A[2]
, но это не то, что происходит.
Линии
int A[3] = {a, b, c};
int B[3] = {x, y, z};
тень на глобальные переменные A
а также B
и инициализировать эти два вектора с {0,0,0}
(потому что a,b,c,x,y или z никогда не устанавливаются). Тогда в вашем vector_product
функция, которую вы используете a
,b
,c
и т. д. и не используйте два переданных вами массива. Я бы порекомендовал сделать то, что сказал какой-то программист Чувак, и найти / перечитать книгу по Си, особенно раздел о массивах.