2D x 2D, когда строки и столбцы установлены пользователем, случайным образом - PullRequest
0 голосов
/ 10 марта 2020

Моей задачей было написать программу, которая умножает две матрицы . Программа должна получить от пользователя информацию о том, сколько строк и столбцов у него имеет первая матрица и сколько второй матрицы (на которую мы умножим). Затем введите диапазон чисел для первой и второй матриц. Таблицы заполнены случайными числами из заданных диапазонов. Затем мы делаем матрицу умножения. Мы отображаем матрицы, заполненные случайными числами, и полученную матрицу. Так я и сделал, но ответ не правильный. Кто-нибудь может мне помочь с этим материалом? Большое спасибо заранее ...

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;
int main()
{
  srand(time(NULL));
  cout << "Provide first matrix dimensions (rows, cols):\n";
  int TWier1, TKol1, za;
  cin >> TWier1 >> TKol1;
  int taba[TWier1][TKol1];
  cout << "Provide matrix max value:\n";
  cin >> za;
  for(int i=0;i<TWier1;i++)
  {
    for(int j=0;j<TKol1;j++)
    {
      taba[i][j] = rand() % za;
    }
  }
  for(int i=0;i<TWier1;i++)
  {
    for(int j=0;j<TKol1;j++)
    {
      cout << taba[i][j] << " ";
    }
    cout << "\n";
  }
  cout << "Provide second matrix dimensions (rows, cols):\n";
  int TWier2, TKol2;
  cin >> TWier2 >> TKol2;
  int tabb[TWier2][TKol2];
  for(int i=0;i<TWier2;i++)
  {
    for(int j=0;j<TKol2;j++)
    {
      taba[i][j] = rand() % za;
    }
  }
  for(int i=0;i<TWier2;i++)
  {
    for(int j=0;j<TKol2;j++)
    {
      cout << tabb[i][j] << " ";
    }
    cout << "\n";
  }
  int tabc[TWier1][TKol2];
  for(int i=0;i<TWier1;i++)
  {
    for(int j=0;j<TKol2;j++)
    {
      tabc[i][j]=0;
    }
  }
  for(int i=0;i<TWier1;i++)
  {
    for(int j=0;j<TKol2;j++)
    {
      for(int k=0;k<TWier1;k++)
      {
        tabc[i][j] += taba[k][j]*tabb[i][k];
      }
    }
  }
  for(int i=0;i<TWier1;i++)
  {
    for(int j=0;j<TKol2;j++)
    {
      cout << tabc[i][j] << " ";
    }
    cout << "\n";
  }
  system("pause");
  return 0;
}

1 Ответ

0 голосов
/ 10 марта 2020

У вас есть опечатка во второй инициализации матрицы:

  int TWier2, TKol2;
  std::cin >> TWier2 >> TKol2;
  int tabb[TWier2][TKol2];
  for(int i=0;i<TWier2;i++)
  {
    for(int j=0;j<TKol2;j++)
    {
      taba[i][j] = rand() % za;  <--- here should be tabb instead of taba
    }
  }

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

...