Please disable adblock to view this page.

← Go home

Matrix Operations using Function Template (C++)

April 24, 2016
Published By : Pratik Kataria
Categorised in: ,

/*

Write a program in C++ using function template to read two matrices of different
data types such as integers and floating point values and perform simple 
arithmetic operations on these matrices separately and display it.

*/

#include<iostream>
#include<stdlib.h>

using namespace std;

template <class matrix>

void add(matrix mat1[20][20],int r1,int c1,matrix mat2[20][20],int r2,int c2)
{
    if( r1==r2 && c1==c2)
    {
        cout<<"\nADDITION:\n";
        for( int i=0;i<r1;i++)
        {
            for( int j=0;j<c1;j++)
            {
                cout<<mat1[i][j]+mat2[i][j]<<"\t";
            }
            
            cout<<"\n";
        }
    }
    else
        cout<<"\nAddition can’t be possible\n";
}
template <class matrix>
void sub(matrix mat1[20][20],int r1,int c1,matrix mat2[20][20],int r2,int c2)
{
    if( r1==r2 && c1==c2)
    {
        cout<<"\nSUBTRACTION:\n";
        for( int i=0;i<r1;i++)
        {
            for( int j=0;j<c1;j++)
            {
                cout<<mat1[i][j]-mat2[i][j]<<"\t";
            }
            
            cout<<"\n";
        }
    }
    else
        cout<<"\nSubtraction can’t be possible\n";
}

template <class matrix>
void mul(matrix mat1[20][20],int r1,int c1,matrix mat2[20][20],int r2,int c2)
{
    matrix temp;
    if( r2==c1)
    {
        cout<<"\nMULTIPLICATION:\n";
        for( int i=0;i<r1;i++)
        {
        
            for( int j=0;j<c2;j++)
            {
                temp=0;
                for( int k=0;k<c1;k++)
                {
                    temp=temp+(mat1[i][k]*mat2[k][j]);
                }
                cout<<temp<<"\t";
            }
            
            cout<<"\n";
        }
    }
    else
        cout<<"\nMultiplication can’t be possible\n";
}

template <class t>
void print(t mat1[20][20],int r1,int c1,t mat2[20][20],int r2,int c2)
{

    cout<<"\nMATRIX 1:\n";
    for( int i=0;i<r1;i++)
    {
        for( int j=0;j<c1;j++)
        {
            cout<<mat1[i][j]<<"\t";
        }
        
        cout<<"\n";
    }
    cout<<"\nMATRIX 2:\n";
    for( int i=0;i<r2;i++)
    {
        for( int j=0;j<c2;j++)
        {
            cout<<mat2[i][j]<<"\t";
        }
        
        cout<<"\n";
    }

}

template <class m>
void getdata(m mat1[20][20],int r1,int c1,m mat2[20][20],int r2,int c2)
{

    cout<<"\nMATRIX 1:\n";
    for( int i=0;i<r1;i++)
    {
        for( int j=0;j<c1;j++)
        {
            cout<<"Enter the data for a["<<i<<"]["<<j<<"]\t";
            cin>>mat1[i][j];
        }
    }
    cout<<"\nMATRIX 2:\n";
    for( int i=0;i<r2;i++)
    {
        for( int j=0;j<c2;j++)
        {
            cout<<"Enter the data for a["<<i<<"]["<<j<<"]\t";
            cin>>mat2[i][j];
        }
    
    }
}

int main()
{
    int choice;
    int a[20][20],b[20][20];
    float c[20][20],d[20][20];
    int r1,r2,c1,c2;
    
    while(1)
    {
    
        cout<<"\n\n************** WELCOME TO MATRIX CALCULATOR *****************\n\t1)INPUT\n\t2)DISPLAY\n\t3)ADDITION\n\t"
        <<"4)SUBTRACTION\n\t5)MULTIPLICATION\n\t6)EXIT\n\nEnter your choice\t";
        cin>>choice;
        
        switch(choice)
        {
            case 1:    
                cout<<"\nMATRIX 1:\n Enter number of row\t";
                cin>>r1;
                cout<<"\nEnter number of column\t";
                cin>>c1;
                cout<<"\nMATRIX 2:\n Enter number of row\t";
                cin>>r2;
                cout<<"\nEnter number of column\t";
                cin>>c2;
                
                getdata(a,r1,c1,b,r2,c2);
                break;
            
            case 2:
                print(a,r1,c1,b,r2,c2);
                break;
            
            case 3:
                add(a,r1,c1,b,r2,c2);
                break;
            
            case 4:
                sub(a,r1,c1,b,r2,c2);
                break;
            
            case 5:
                mul(a,r1,c1,b,r2,c2);
                break;
            
            case 6:
                exit(0);
                break;
            
            default:
                cout<<"\nyou have enter wrong choice plz try again";
        }
    }

}

View Article Page
Download

Pratik Kataria is a budding programmer, web designer and developer.