【问题标题】:Vector Cross product in CC中的向量叉积
【发布时间】:2018-07-15 16:24:55
【问题描述】:

我正在尝试编写代码来解决两个 3D 向量的叉积。我需要能够输入向量的 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;
}

【问题讨论】:

  • 在您阅读输入后直接会发生什么?或许您应该找一些好的初学者书籍并阅读有关 scope 和变量阴影的内容。
  • 是的,那个程序员老兄说的。看起来您需要学习 C 的一些基础知识。您的范围界定肯定是一个问题,您的一些语法也是如此。 (提示:int A[3] = {a, b, c}; 没有做你认为的事情;范围只是那行代码问题的一部分)

标签: c vector cross-product


【解决方案1】:

您似乎正在尝试使 abc 引用 A[0]A[1]A[2],但事实并非如此。

线条

int A[3] = {a, b, c};
int B[3] = {x, y, z};

隐藏全局变量AB,并用{0,0,0} 初始化这两个向量(因为永远不会设置a、b、c、x、y 或z)。然后在您的vector_product 函数中,您使用abc 等,并且不要使用您传入的两个数组。我建议您按照 Some Programmer Dude 所说的进行查找/重新- 读一本关于 C 的书,尤其是关于数组的部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 2011-01-20
    • 2010-09-19
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多