Как написать функцию для перекрестного произведения двух векторов в C - PullRequest
0 голосов
/ 27 февраля 2020

Я пишу функцию в C, которая принимает два вектора, v1 и v3, и выполняет умножение вектора на вектор для создания матрицы. v1 является вектором 1xL1, а v3 является вектором 1xL2. Метод принимает транспонирование v3 раз v1 и печатает матрицу. Вот что у меня есть:

 void crossProduct(float *v1, float *v3, int L1, int L2){
      int i, j;
      float sum;
      float c[L2][L1];
      for(i = 0; i < L2; i++){
        for(j = 0; j < L1; j++){
          sum = 0.0;
          sum += v3[i] * v1[j];
          c[i][j] = sum;
          printf("%d", c[i][j]);
        }
      }
    }

Я не получаю ожидаемого результата. Я также хочу матрицу для печати в матричной форме, но я не уверен, как.

1 Ответ

0 голосов
/ 27 февраля 2020

Вам необходимо использовать формат %f для чисел с плавающей запятой, а не %d.

Чтобы получить читаемый массив, ставьте пробел после каждого значения и символ новой строки после каждой строки.

 void crossProduct(float *v1, float *v3, int L1, int L2){
      int i, j;
      float sum;
      float c[L2][L1];
      for(i = 0; i < L2; i++){
        for(j = 0; j < L1; j++){
          sum = 0.0;
          sum += v3[i] * v1[j];
          c[i][j] = sum;
          printf("%f ", c[i][j]);
        }
        printf("\n");
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...