我是C++的新手,正在尝试执行矩阵乘法以从文件中获取数据。但是我无法获得乘法部分。有人请帮我解决这个问题。

虽然我试图做2个矩阵的乘法,但无法获得输出。

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    string line;
    int d[3][3],e[3][3],f[3][3];
    int i=0;
    int x=0;
    int j=0;
    string a[20];
    string b[20];
    string c[20];
    ifstream myfile;

    myfile.open("numeric.txt");
    while(getline (myfile,line))
    {
        if(line!=" ")
        {
            a[x]=line;
            b[x]=line;
            cout<<a[x]<<endl;
            x++;
        }
    }
    cout<<"first Matrix"<<endl;
    for(i=0;i<3;i++)
    {
        for(j=0;j<=4;j++)
        {
            cout<<a[i][j]<<"";
        }
        cout<<endl;
    }
    cout<<"Second Matrix"<<endl;
    for(i=1;i<4;i++)
    {
        for(j=0;j<6;j++)
        {
            cout<<b[i][j]<<"";
        }
        cout<<endl;
    }
    cout<<"Multiplication"<<endl;
    for(i=0;i<3;i++)
    {
        for(j=0;j<=3;j++)
        {
            c[i][j]=0;
            for(int k=0;k<3;k++)
            {
                c[i][j]+=a[i][k]*b[k][j];
            }
        }
    }
    cout<<"Multiplication Result"<<endl;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            cout<<c[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

最佳答案

这是一个完整的示例,说明如何将(固定大小)矩阵写入文件以及如何从该文件读取来构​​建它们:

#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

int main() {

    const size_t matrixSize = 3;

    //
    ofstream matrixOutput("matrix.txt");

    for (size_t i = 0; i < matrixSize; i++) {
        for (size_t j = 0; j < matrixSize; j++) {
            matrixOutput << j*i << ' ';
        }
        matrixOutput << '\n';
    }

    for (size_t i = 0; i < matrixSize; i++) {
        for (size_t j = 0; j < matrixSize; j++) {
            matrixOutput << j*i * 2 << ' ';
        }
        matrixOutput << '\n';
    }

    matrixOutput.close();

    //

    ifstream matrixData("matrix.txt");

    size_t matrixInput[matrixSize][matrixSize];
    size_t matrixInput2[matrixSize][matrixSize];

    size_t position = 0;
    size_t number = 0;

    while (matrixData >> number) {

        const size_t matrixNumber = size_t(floor(position / (matrixSize*matrixSize)));
        const size_t row = size_t(floor(position / matrixSize)) % matrixSize;

        switch (matrixNumber) {
            case 0:
                matrixInput[row][position % 3] = number; break;
            case 1:
                matrixInput2[row][position % 3] = number; break;
        }
        position++;
    }

    matrixData.close();

    cout << "Matrices: " << endl;

    for (size_t i = 0; i < matrixSize; i++) {
        for (size_t j = 0; j < matrixSize; j++) {
            cout << matrixInput[i][j] << ' ';
        }
        cout << endl;
    }

    cout << endl;

    for (size_t i = 0; i < matrixSize; i++) {
        for (size_t j = 0; j < matrixSize; j++) {
            cout << matrixInput2[i][j] << ' ';
        }
        cout << endl;
    }
    cout << endl;

    cout << "Matrices multiplication: " << endl;

    for (size_t i = 0; i < matrixSize; i++) {
        for (size_t j = 0; j < matrixSize; j++) {
            cout << matrixInput[i][j] * matrixInput2[i][j] << ' ';
        }
        cout << endl;
    }
    // ...
}

注:如果需要的话,也可以将矩阵大小写入文件中,以便以后可以检索它并构建自定义大小矩阵。

关于c++ - 从文件中读取数据并在C++中执行矩阵乘法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47546403/

10-16 19:07