1

行列を乗算できる C++ でプログラムを作成しようとしています。残念ながら、2 つのベクトルからマトリックスを作成することはできません。目標: 行数と列数を入力します。次に、それらの次元で作成されたマトリックスがあるはずです。次に、数値を入力して行列を埋めることができます (たとえば、行 = 2 列 = 2 => 行列 = 2 x 2)。私はこの2つのコードでそれを試しました:(2番目のコードはヘッダーファイルにあります)

#include <iostream>
#include "Matrix_functions.hpp"

using namespace std;

int main ()
{
    //matrices and dimensions
    int rows1, cols1, rows2, cols2;
    int **matrix1, **matrix2, **result = 0;

    cout << "Enter matrix dimensions" << "\n" << endl;
    cin >> rows1 >> cols1 >> rows2 >> cols2;

    cout << "Enter a matrix" << "\n" << endl;

    matrix1 = new int*[rows1];
    matrix2 = new int*[rows2];

    // Read values from the command line into a matrix
    read_matrix(matrix1, rows1, cols1);
    read_matrix(matrix2, rows2, cols2);

    // Multiply matrix1 one and matrix2, and put the result in matrix result
    //multiply_matrix(matrix1, rows1, cols1, matrix2, rows2, cols2, result);

    //print_matrix(result, rows1, cols2);

    //TODO: free memory holding the matrices

    return 0;
}

これがメインコードです。read_matrix 関数を含むヘッダー ファイル:

#ifndef MATRIX_FUNCTIONS_H_INCLUDED
#define MATRIX_FUNCTIONS_H_INCLUDED

void read_matrix(int** matrix, int rows, int cols)
{
    for(int i = 0; i < rows; ++i)
        matrix[i] = new int[cols];

}

//int print_matrix(int result, int rows1, int cols1)
//{
//    return 0;
//}

//int multiply_matrix(int matrix2, int rows2, int cols2, int matrix3, int rows3, int cols3, int result2)
//{
//    return result2;
//}

#endif // MATRIX_FUNCTIONS_H_INCLUDED

最初の部分は動作します。寸法を記入できます。しかし、次のように出力されます: マトリックスを入力すると、プログラムは終了します。行列の数字を入力できないのはなぜですか?

誰かが私を助けてくれることを願っています。不明な点がありましたら、お知らせください。

前もって感謝します:D(コメントのほとんどに注意を払わないでください。それらは残りの乗算コード用です)

4

1 に答える 1