Умножение транспонированной матрицы со второй матрицей - PullRequest
0 голосов
/ 25 марта 2020
#include <stdio.h>

int main()
{
  int m, n, p, q, c, d, k, sum = 0;
  int first[10][10], transpose [20] [20], second[10][10], multiply[10][10];

  // m row n col of first matrix
  // transpose would be m col n row of first matrix 



  printf("Enter number of rows and columns of first matrix\n");
  scanf("%d%d", &m, &n);
  printf("Enter elements of first matrix\n");

  for (c = 0; c < m; c++)
    for (d = 0; d < n; d++)
      scanf("%d", &first[c][d]);

 //make first matrix transpose 

     for (int i = 0; i < c; ++i)
        for (int j = 0; j < d; ++j) {
            transpose[d][c] = first[c][d]; //c becomes column d is row
        }



  printf("Enter number of rows and columns of second matrix\n");
  scanf("%d%d", &p, &q);

  if (m != p)
    printf("The multiplication isn't possible.\n");
  else
  {
    printf("Enter elements of second matrix\n");

    for (c = 0; c < p; c++)
      for (d = 0; d < q; d++)
        scanf("%d", &second[c][d]);

    for (c = 0; c < m; c++) {
      for (d = 0; d < q; d++) {
        for (k = 0; k < p; k++) {
          sum = sum + transpose[d][k]*second[k][d];
        }

        multiply[d][c] = sum;
        sum = 0;
      }
    }

    printf("Product of the matrices:\n");

    for (c = 0; c < m; c++) {
      for (d = 0; d < q; d++)
        printf("%d\t", multiply[d][c]);

      printf("\n");
    }
  }

  return 0;
}

Моя цель - взять транспонирование первой матрицы и затем умножить ее на вторую матрицу. Я нашел примеры кодов и отредактировал их, как мне было нужно, и, кажется, работает до части умножения. Это дает мне несвязанные числа, такие как на картинке ниже. Также мне нужно добавить if else к некоторой части этого кода, чтобы, если значение столбца не равно значению строки, программа прекратила выполнение. enter image description here

...