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]
3 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]3 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
What is the best Describe an integer data type
kolbaska11 [484]

Answer:

It is a data type that only holds whole numbers, a.k.a. integers.

what is the picture about?

3 0
2 years ago
Fill in the blank with the correct response.
Verizon [17]

Answer:

File structure.

Explanation:

HTML is an acronym for hypertext markup language and it is a standard programming language which is used for designing, developing and creating web pages.

Generally, all HTML documents are divided into two (2) main parts; body and head. The head contains information such as version of HTML, title of a page, metadata, link to custom favicons and CSS etc. The body of the HTML document contains the contents or informations of a web page to be displayed.

The file transfer protocol (FTP) client component of a full-featured HTML editor allows you to synchronize the entire file structure. Therefore, when you wish to share your entire html document over a network server such as a FTP client, you should use a full-featured HTML editor.

6 0
3 years ago
Which type of document would be best created in Word?
givi [52]

Answer:

it would be Animation I declare

6 0
2 years ago
Layer 4 security and application services, including server load balancing, Secure Sockets Layer (SSL) offloading, firewalling,
Fittoniya [83]

Answer:

Layer 4 security and application services, including server load balancing, Secure Sockets Layer (SSL) offloading, firewalling, and intrusion prevention system (IPS) services are provided by the data center <u>aggregation</u> layer.

Explanation:

Consider the given information.

A key point for security and application services is the aggregation layer. In the data centre aggregation layer, the Layer 4 security and application services provide server load balancing, SSL offloading, firewalling, and IPS services.

Layer 4 security and application services, including server load balancing, Secure Sockets Layer (SSL) offloading, firewalling, and intrusion prevention system (IPS) services are provided by the data center <u>aggregation</u> layer.

7 0
3 years ago
You have been asked to decouple an application by utilizing SQS. The application dictates that messages on the queue can be deli
LuckyWell [14K]

Answer:

Option B is the correct option.

Explanation:

When using SQS the user request to separate a query. The specification specifies that updates on the list may have been transmitted multiple times, but it must be transmitted throughout the sequence in which they appeared, and therefore should require secure, repetitive queue polling.

So, They configure a First In First Out SQS queue and allow long-polling which is suitable for AWS services.

8 0
3 years ago
Other questions:
  • Peak download rate for a 4g network is __________. select one:
    12·2 answers
  • If the wrong server edition is installed, what command can be used to change to a different edition?​
    5·1 answer
  • How can you add and remove categories from a previously created chart? A. Click the Format tab. B. Click the Chart Styles button
    13·2 answers
  • Develop an sec (single error correction) code for a 16-bit data word. generate the code for the data word 0101000000111001. show
    6·2 answers
  • A telecom company wants to extend their horizontal cables over a distance of 510 meters. Which cable should they use?
    6·1 answer
  • Which hardware device connects your network to the internet? select one:
    15·1 answer
  • Create a view named Top10PaidInvoices that returns three columns for each vendor: VendorName, LastInvoice (the most recent invoi
    12·1 answer
  • Give me a code that draws a house with a roof in python. Please Answer!!!
    9·1 answer
  • I need so much help, can anyone please help me?
    15·1 answer
  • A ________ is an application program that runs on a server-tier computer and manages processes such as items in a shopping cart
    8·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!