Wednesday, 11 February 2015

C++ Program for Matrix Multiplication

/*
Program for Matrix Multiplication (Max order of matrix is 10x10).
*/
 
#include<iostream>
#include<iomanip>
using namespace std;
 
void inputMatrix(int[][10], int, int);        //For inputting matrix
void displayMatrix(int[][10], int, int);    //For displaying matrix
void size(int &, int &);                    //Gets matrix size
void line();                                //For displaying Horizontal line
 
int main()
{
    int row1, row2, column1, column2, sum = 0;
    int matrix1[10][10], matrix2[10][10], result[10][10];
 
    //For size of Matrix-1
    cout << "Enter number of rows and columns in Matrix-1:\n";
    size(row1, column1);
    
    do
    {
        //For size of Matrix-2
        cout << "\n\nEnter number of rows and columns in Matrix-2:\n";
        size(row2, column2);
 
        if (column1 != row2)
            cout << "Invalid Input........\nNumber of columns of Matrix-1 is not equal to number of rows of Matrix-2\n";
    } while (column1 != row2);
 
    line();
 
    //For Input of Matrix-1
    cout << "Enter elements of Matrix-1:\n\n";
    inputMatrix(matrix1,row1,column1);
 
    line();
 
    //For Input of Matrix-2
    cout << "Enter elements of Matrix-2:\n\n";
    inputMatrix(matrix2, row2, column2);
    
    //For Matrix Multiplication
    for (int r = 0; r < row1; r++)
    {
        for (int c = 0; c < column2; c++)
        {
            sum = 0;
            for (int i = 0; i < column1; i++)
                sum += (matrix1[r][i] * matrix2[i][c]);
            result[r][c] = sum;
        }
    }
    
    system("cls");        //Clears Console
 
    //displays matrix-1
    cout << "Matrix - 1:\n";
    displayMatrix(matrix1, row1, column1);
 
    line();
 
    //displays matrix-2
    cout << "Matrix - 2:\n";
    displayMatrix(matrix2, row2, column2);
 
    //for formatting output
    line();
    for (int i = 0; i < 40; i++)
        cout << "**";
 
    //Displays Multiplication
    cout << "MULTIPLICATION of Matrix - 1 and Matrix - 2 is:\n";
    displayMatrix(result, row1, column2);
 
    cout << endl;
    return 0;
}
 
void size(int &row,int &column)
{
    do
    {
        cout << "Rows (Max 10):\t\t";
        cin >> row;
        if (row > 10 || row < 0)
            cout << "Invalid input.......\n";
    } while (row > 10 || row < 0);
    do
    {
        cout << "Columns (Max 10):\t";
        cin >> column;
        if (column > 10 || column < 0)
            cout << "Invalid input.......\n";
    } while (column > 10 || column < 0);
}
 
//For inputting matrix
void inputMatrix(int matrix[][10], int row, int column)
{
    for (int r = 0; r < row; r++)
    {
        for (int c = 0; c < column; c++)
        {
            cout << "Enter element at index [" << r << "][" << c << "]?\t";
            cin >> matrix[r][c];
        }
    }
}
 
void line()            //Displays horizontal Line
{
    cout << endl;
 
    //for formatting output
    for (int i = 0; i < 80; i++)
        cout << "_";
}
 
void displayMatrix(int matrix[][10], int row, int column)
{
    cout << endl;
 
    for (int r = 0; r < row; r++)
    {
        cout << "\t";
        for (int c = 0; c < column; c++)
            cout << matrix[r][c] << "\t";
        cout << endl<<endl;
    }
}
 
OUTPUT-1
 OUTPUT-2

No comments:

Post a Comment