Вектор Крест произведение в 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и т. д. и не используйте два переданных вами массива. Я бы порекомендовал сделать то, что сказал какой-то программист Чувак, и найти / перечитать книгу по Си, особенно раздел о массивах.

Другие вопросы по тегам