1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
navik [9.2K]
4 years ago
7

Write a C program to multiply matrix A and matrix B of variable. For both A and B, the size of the matrix will be given along wi

th the entries of the matrix in two input files, inA.txt and inB.txt. The first line of the input file will contain the number of rows followed by the number of columns of the matrix. The entries of the matrix are listed on the next line in row-major order. Print the output matrix C to outC.txt in the same format as input files. Be sure to include comments in your code.
Computers and Technology
1 answer:
victus00 [196]4 years ago
4 0

Answer:

<u><em>Code:</em></u>

    #include <iostream>

    #include <fstream>

    #include <cctype>

    #include <cmath>

    #include <vector>

    #include <float.h>

   

    using namespace std;

   

    typedef vector<vector<double> > C2DArray;

   

    void Matrix_Mult(bool* error_flag, const int mRows, const int nCols, const int pCols, const C2DArray A_Matrix, const C2DArray B_Matrix, C2DArray& C_Matrix) {      

     int i = A_Matrix.size(), j = A_Matrix[0].size(), k = B_Matrix[0].size();

     double dummy;

     if ((j != B_Matrix.size()) || (i != mRows) || (j != nCols) || (k != pCols))  *error_flag = true;

   

     if ((C_Matrix.size() != i) || (k != C_Matrix[0].size()))  *error_flag = true;

   

     if (!(*error_flag)){

     for (k = 0; k < mRows; k++) { // Do each row of A with each column of B

      for (i = 0; i < pCols; i++) {

       dummy = 0.0;

       for (j = 0; j < nCols; j++) {

        dummy += A_Matrix[k][j]*B_Matrix[j][i];

          } // End for j

          C_Matrix[k][i] = dummy;

      } // End for i

     } // End for k

     }

   

        return;

    } // End Matrix_Mult

   

    int main()

    {char rflag = 0; //Readiness flag  

   

    cout << "                 Mat_Mul1 (7 June 2013)\n";

    cout << "=========================================================================== \n";

    cout << "This program multiplies two matrices, [A] and [B]: [A][B] = [C].\n";

    cout << "[A] is M X N, [B] is N X P, and [C] is M X P\n";

    cout << "The dimensions of the [A] and [B] matrices, M, N, and P, should \n";

    cout << "have been saved beforehand in a file named mulmatdat.\n";

    cout << "mulmatdat should be in the same folder as the Mat_Mul1 executable.\n";

    cout << "The next values of mulmatdat should be the entries for matrix [A],\n";

    cout << "with data for row 1 first, then row 2, then row 3, etc.\n";

    cout << "The entries for the [B] matrix should follow, in the same order.\n";

    cout << "\nThe data is assumed to be of type double. Variables used within this program\n";

    cout << "are type double.\n";

    cout << "\nThe output is written to the file mulmatout.txt.\n";

   

    cout << "\nIs everything ready (are you ready to continue?)? If yes, Enter y. \n";

    cout << "Otherwise Enter any other key. \n";

    cin >> rflag;

   

    if (toupper(rflag) == 'Y') {

    C2DArray A, B, C; // A, B, and C Matrices

    int i, j, mDim, nDim, pDim; // Array index variables and matrix dimensions

    bool erFlag = false;  // Error flag

   

    ifstream in("mulmatdat.txt", ios::in);

   

    if (!in) {

            cout << "\nCannot open the input file.\n";

         cout << "\nEnter any key to continue. \n";

         cin >> rflag;

            return 0;

    }

   

    in >> mDim >> nDim >> pDim; //Input the Matrices' dimensions from the file

     

    if ((mDim < 1) || (nDim < 1) || (pDim < 1)){

            cout << "\nInvalid dimension entered. Program terminated. \n";

         cout << "\nEnter any key to continue. \n";

         cin >> rflag;

            in.close(); //Close the input file before terminating

            return 0;

    }

   

    ofstream out("mulmatout.txt", ios::out);

    if (!out) {

            cout << "\nCannot open the output file. Program terminated.\n";

         cout << "\nEnter any key to continue. \n";

         cin >> rflag;

            in.close(); //Close the input file before terminating

            return 0;

    }

   

    // Beginning of try block, if vector re-sizing unsuccessful

    try {

   

           // Resize the arrays to the appropriate sizes

            A.resize(mDim); // M rows

         B.resize(nDim); // N rows

         C.resize(mDim); // M rows

            for (i = 0; i < mDim; i++){

               A[i].resize(nDim); // M columns

            C[i].resize(pDim); // P columns

            } // End for i

   

         for (i = 0; i < nDim; i++){

               B[i].resize(pDim); // P columns

            } // End for i

   

    } // End of try block

   

    catch (bad_alloc& xa) { // Catch block, for exceptions

   

            in.close();

            out.close();

            cerr << "\nIn catch block, so an exception occurred: " << xa.what() << "\n";

            cout << "\nEnter any key to continue. \n";

            cin >> rflag;

            return 0;

   

    } // End of catch block

   

    for (i = 0; i < mDim; i++){ //Input the A Matrix from the file

            for (j = 0; j < nDim; j++){

              in >> A[i][j];

            }//End for j

    }//End for i

   

    for (i = 0; i < nDim; i++){ //Input the B Matrix from the file

            for (j = 0; j < pDim; j++){

             in >> B[i][j];

            }//End for j

    }//End for i

   

    in.close(); //Close the input file

   

    Matrix_Mult(&erFlag, mDim, nDim, pDim, A, B, C);

   

    if (erFlag){

      cout << "Inconsistent data sent to Matrix_Mult routine. Matrix multiplication NOT performed. Check data before running again.\n";

    }

    else {

   

     out.precision(DBL_DIG);

   

     out << "\nThe A matrix follows:\n";

     out << "\n";

     for (i = 0; i < mDim; i++){

      for (j = 0; j < nDim; j++){

     out << A[i][j] << " ";

      } // End for j

      out << "\n";

     }//End for i

   

     out << "\nThe B matrix follows:\n";

     out << "\n";

     for (i = 0; i < nDim; i++){

      for (j = 0; j < pDim; j++){

     out << B[i][j] << " ";

      } // End for j

      out << "\n";

    }//End for i

   

     out << "\nThe product matrix, C, follows:\n";

     out << "\n";

     for (i = 0; i < mDim; i++){

      for (j = 0; j < pDim; j++){

       out << C[i][j] << " ";

      } // End for j

      out << "\n";

     }//End for i

   

     cout << "\nDone! The solution is in the text file mulmatout.txt \n";

    } // End else !erFlag

    out.close();

    }

    else cout << "\nNot ready. Try again when ready with information. \n";

    cout << "\nEnter any key to continue. \n";

    cin >> rflag;

    return 0;

    }

<u><em></em></u>

You might be interested in
The English (or Shakespearean) sonnet form includes three quatrains and a couplet two quatrains and a couplet two quatrains and
san4es73 [151]
<span>Three quatrains and a couplet</span>
4 0
3 years ago
The correct or acceptable way of communicating on the internet is known as
stepladder [879]
I want to say e-mail.

8 0
4 years ago
Researchers conducted a 'natural experiment' to examine the effects of on-site food services on weight gain among first-year col
anygoal [31]

Answer:

On-site food services is the INDEPENDENT variable and the weight gain is the DEPENDENT variable

Explanation:

Variables can be dependent or independent. An independent variable is the one used by the researcher to test its degree of influence on the dependent variable. The dependent variable, as the name implies, relies on changes in the independent variable to effect its own changes.

In the question, it is obvious that weight gain among the first year students is dependent on on-site food services

7 0
3 years ago
Complete the following sentences by choosing the best answer from the drop-down menus.
aleksandrvk [35]

Answer:

b. Application software

Explanation:

Applications are type of software that are installed in a specific operating system of a computer that deviates from those system software installed together with the system itself. These third-party applications are necessary for other functions such as entertainment, business, leisure and other needs addressing of which the system software can't provide.

Examples:

Microsoft Office Word, Excel, Powerpoint

i think i did that right:)

7 0
3 years ago
In the United States, the government controls and owns a very large percentage of the media.
jeka94
True they can pretty much see anything you do and on top of that they can look through your cameras. thats why i keep tape on my camera on my laptop
6 0
3 years ago
Read 2 more answers
Other questions:
  • WILL UPVOTE NEED ANSWERS ASAP i have till 4:30
    12·1 answer
  • Question 1<br> a node is.<br> •a sever<br> A Cell Phone<br> A Laptop<br> a device on a network
    13·1 answer
  • Many people use relative location on a daily basis by using __________. A.
    12·1 answer
  • Problem statement: Using loop, write a program that will ask the user to enter a character for left or right. Then, the user wil
    13·1 answer
  • Why would it be unusual to find a fossil of an organism’s eye?
    11·1 answer
  • Read the scenario below, and then answer the question.
    13·1 answer
  • Which statement about intellectual property is true? (CSI-7.6) Group of answer choices It is okay to use code you find on the in
    14·1 answer
  • How to install an older version of prettier on yarn
    9·1 answer
  • An excerpt of a sample business cover letter. The text uses curly font and has a warm to cold color background. What change does
    13·1 answer
  • What is pseudocode? O A way of describing a set of instructions in text form using plain english O A diagrammatic representation
    13·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!