Skip to main content

Matrix - template

/*
Problem Statement:
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
#include
#include

template //Template Definition

class matrix
{
int m,n;

T a[10][10];

public:

matrix() //Default Constructor
{
m=n=0;
}

matrix(int x,int y,T c[10][10]); //Parameterised Constructor
void insert();
void display();

matrix operator +(matrix);
matrix operator -(matrix);
matrix operator *(matrix);
};

//------------------- Constructor ----------

template
matrix::matrix(int x,int y,int z[10][10])
{
int i,j;
m=x;
n=y;
for(i=0;i for(j=0;j a[i][j]=z[i][j];
}

//------------------ Insertion --------------

template
void matrix::insert()
{
cout<<"\n Enter the No Of Rows & Columns : ";
cin>>m>>n;
cout<<"\n Enter Matrix : ";
for(int i=0;i for(int j=0;j {
cout<<"\n Enter Element "< cin>>a[i][j];
}
}

//------------------ Addition --------------

template
matrix matrix::operator +(matrix b)
{
T c[10][10];
int x,y;
x=m;
y=n;
if( m==b.m && n==b.n)
{
for(int i=0;i for(int j=0;j c[i][j]=a[i][j]+b.a[i][j];
}
else
cout<<"\n Addition is Not Possible as No of Rows & Columns Must be Same";
return matrix(x,y,c);
}

//------------------ Substraction --------------

template
matrix matrix::operator -(matrix b)
{
T c[10][10];
int x,y;
x=m;
y=n;
if(m==b.m && n==b.n)
{
for(int i=0;i for(int j=0;j c[i][j]=a[i][j]-b.a[i][j];
}
else
cout<<"\n Addition is Not Possible as No of Rows & Columns Must be Same";
return matrix(x,y,c);
}

//------------------ Multiplication --------------

template
matrix matrix::operator *(matrix b)
{
T c[10][10];
int i,j,k,x,y;
x=m;
y=b.n;
if(n==b.m)
{
for(i=0;i {
for(j=0;j {
c[i][j]=0;
for(k=0;k c[i][j]=c[i][j]+a[i][k]*b.a[k][j];
}
}
}
else
cout<<"\n Multiplication is Not Possible as No of Rows & Columns Must be Same";
return matrix(x,y,c);
}

//------------------ Display --------------

template
void matrix::display()
{
cout<<"\n\n Matrix is : ";
for(int i=0;i {
cout<<"\n";
for(int j=0;j {
cout< }
}
}


void main()
{
clrscr();
int choice;
char ans;
matrix m1,m2,m3;
do
{
cout<<"\n-----Menu----";
cout<<"\n 1.Enter 1st Matrix \n 2.Enter 2nd Matrix \n 3.Perform Addition";
cout<<"\n 4.Perform Substraction \n 5.Perform Multiplication \n 6.Exit";
cout<<"\n Enter Choice Your Choice: ";
cin>>choice;

switch(choice)
{
case 1:
m1.insert();
m1.display();
break;

case 2:
m2.insert();
m2.display();
break;

case 3:
m3=m1+m2;
m3.display();
break;

case 4:
m3=m1-m2;
m3.display();
break;

case 5:
m3=m1*m2;
m3.display();
break;

case 6:
exit(1);

} cout<<"\n\n Do You Want To Continue ?(Y/N) : ";
ans=getche();
} while(ans=='y'||ans=='Y');
getch();

}

Comments

Popular posts from this blog

4. Lex and Yacc Program to detect errors in a 'C' Language Program

Lex and Yacc Program to detect errors in a 'C' Language Program   Lex Code : %{ #include"y.tab.h" #include<stdio.h> int LineNo = 1 ; %} identifier [ a - zA - Z ][ _a - zA - Z0 - 9 ]* number [ 0 - 9 ]+|([ 0 - 9 ]*\.[ 0 - 9 ]+) %% main \(\) return MAIN ; if return IF ; else return ELSE ; while return WHILE ; int | char | flaot return TYPE ; { identifier } return VAR ; { number } return NUM ; \> | \< | \<= | \>= | == return RELOP ; [\ t ] ; [\ n ] LineNo ++; . return yytext [ 0 ]; %% Yacc Code : %{ #include<string.h> #include<stdio.h> extern int LineNo ; int errno = 0 ; %} % token NUM VAR RELOP % token MAIN IF ELSE WHILE TYPE % left '-' '+' % left '*' '/' %% PROGRAM : MAIN BLOCK ; BLOCK : '{' CODE '}' ; CODE : BLOCK | STATEMENT CODE | STATEMENT ; STATEMENT : DECST ';' | DECST { printf ( "\nLine number %d...

Selenium + Python + UnexpectedAlertPresentException: Dealing with annoying alerts

Handling  UnexpectedAlertPresentException   Alerts who hates them? I Do!  Who doesn't hate an annoying alert causing your tests / scraping job to fail? I must say they are pretty much on point on the Unexpected part!  Fortunately, there are easy ways to mitigate the issue. 1. Disable alerts completely: driver . execute_script( 'window.alert = function(){};' ); execute this script just before where you anticipate the alert and you're golden. 2. You want to see the alert text but not disturb the execution flow. driver . execute_script( 'window.alert = console.info;' ); Now the alerts have been redirected to the console and you don't have to worry about them. (Unless you have to - then you'd have to monitor the console) 3. You know exactly when it comes and want to accept the alert and move on. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 from selenium import webdriver from selenium.webdriver.s...

2. Lex program that detects statement type i.e. Simple or Compound

Lex program that detects statement type i.e. Simple or Compound Note: Only AND | OR | BUT conjunctions are supported. Program: % option noyywrap %{ char test = 's' ; %} %% ( "" [ aA ][ nN ][ dD ] "" )|( "" [ oO ][ rR ] "" )|( "" [ bB ][ uU ][ tT ] "" ) { test = 'c' ;} . {;} \ n return 0 ; %% main () { yylex (); if ( test == 's' ) printf ( "\n Its a simple sentence" ); else if ( test == 'c' ) printf ( "\n This is compound sentence" ); }