Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
3 views

Introduction To Programming - CS201 Power Point Slides Lecture 44

Uploaded by

Hasnain ullah
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Introduction To Programming - CS201 Power Point Slides Lecture 44

Uploaded by

Hasnain ullah
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 36

Introduction to

Programming
Lecture 44
Class Matrix
class Matrix
{
private :
int numRows , numCols ;
double ** elements ;
};
Class Matrix
class Matrix
{
private :
int numRows , numCols ;
double ** elements ;
public :
Matrix ( int = 0 , int = 0 ) ; // Default construc
constru
Matrix ( const Matrix & ) ; // Copy constructo
~ Matrix ( ) ; // Destructor
Class Matrix
// Utility functions of Matrix class

int getRows ( void ) const ;


int getCols ( void ) const ;

// Input output functions for Matrix class


clas

const Matrix & input ( istream & is = cin ) ;


const Matrix & input ( ifstream & is ) ;

void output ( ostream & os = cout ) const ;


void output ( ofstream & os ) const ;
Class Matrix

// Plus Operator
Matrix operator + ( Matrix & m ) cons
Matrix operator + ( double d ) const ;
A+
d is a variable
‘A’ is an object of a of type double
class Matrix
d+
d is a ‘a’ is an
variable of object of a
type double class Matrix
Class Matrix
// Plus Operator

Matrix operator + ( Matrix & m ) const ;


Matrix operator + ( double d ) const ;
friend Matrix operator + ( double d , Matrix &
;
const Matrix & operator += ( Matrix & m ) ;
i += 3 ;
i =i+3;

A += B ; // A and B are Matrice


A–B
Where A and B
are both
matrices
d is a variable
‘A’ is an
of type double
object of a
class Matrix

A–d;
d is a ‘a’ is an
variable of object of a
type double class Matrix

d–A;
Class Matrix
// Minus Operator

Matrix operator - ( Matrix & m ) const ;


Matrix operator - ( double d ) const ;
friend Matrix operator - ( double d , Matrix &
m);
A*B;
Where A and B are both matrice
‘A’ is an d is a variable
object of a of type double
class Matrix

A*d;
d is a
variable of ‘a’ is an
type double object of a
class Matrix

d*A;
Class Matrix
// Multiplication Operator

Matrix operator * ( const Matrix & m ) ;


Matrix operator * ( double d ) const ;
friend Matrix operator * ( const double d , const Matrix &
m);
A/
‘A’ is an d is a variable
object of a of type double
class Matrix
Class Matrix
// Division Operator

Matrix operator / ( const double d


;
Example
// Stream Insertion and Extraction Operator

cin >> m ;

// Where m is a matrix
Class Matrix
// Stream Insertion and Extraction Operator

friend istream & operator >> ( istream & , Matrix & ) ;


friend ifstream & operator >> ( ifstream & , Matrix & )

friend istream & operator << ( istream & , Matrix & ) ;


friend ifstream & operator << ( ifstream & , Matrix & )
Class Matrix

const Matrix & operator = ( const Matrix & m

const Matrix & transpose ( void ) ;


Class Matrix
Matrix :: Matrix ( int row , int col ) // Default
Constructor
{
numRows = row ;
numCols = col ;
elements = new ( double * ) [ numRows ] ;
for ( int i = 0 ; i < numRows ; i ++ )
{
elements [ i ] = new double [ numCols ] ;
for ( int j = 0 ; j < numCols ; j ++ )
elements [ i ] [ j ] = 0.0 ;
}
}
Matrix A ( B )
;
Matrix A = B
;
Class Matrix
Matrix :: Matrix ( const Matrix & m )
{
numRows = m.numRows ;
numCols = m.numCols ;
elements = new ( double * ) [ numRows ] ;
for ( int i = 0 ; i < numRows ; i ++ )
{
elements [ i ] = new double [ numCols ] ;
for ( int j = 0 ; j < numCols ; j ++ )
elements [ i ] [ j ] = m.elements [ i ] [ j ] ;
}
}
Class Matrix
Matrix :: ~ Matrix ( void )
{
delete [ ] elements ;
}
Class Matrix
int Matrix :: getRows ( ) const
{
return numRows ;
}

int Matrix :: getCols ( ) const


{
return numCols ;
}
Class Matrix
void Matrix :: output ( ostream & os ) con
{
// Print first row with special character
os.setf ( ios :: showpoint ) ;
os.setf ( ios :: fixed , ios :: floatfield ) ;
os << ( char ) 218 ;
for ( int j = 0 ; j < numCols ; j ++ )
os << setw ( 10 ) << " “ ;
os << ( char ) 191 << "\n" ;
Class Matrix
// Print remaining rows with vertical bars only
for ( int i = 0 ; i < numRows ; i ++ )
{
os << ( char ) 179 ;
for ( int j = 0 ; j < numCols ; j ++ )
os << setw ( 10 ) << setprecision ( 2 ) << elements [ i ]
os << ( char ) 179 << "\n" ;
}
Class Matrix
// Print last row with special charact
os << ( char ) 192 ;
for ( int j = 0 ; j < numCols ; j ++
os << setw ( 10 ) << " " ;
os << ( char ) 217 << "\n" ;
}
Class Matrix
void Matrix :: output ( ofstream & os ) const
{
os.setf ( ios :: showpoint ) ;
os.setf ( ios :: fixed , ios :: floatfield ) ;
os << numRows << " " << numCols << "\n" ;
for ( int i = 0 ; i < numRows ; i ++ )
{
for ( int j = 0 ; j < numCols ; j ++ )
os << setw ( 6 ) << setprecision ( 2 ) << elements [ i ] [
os << "\n" ;
}
}
Class Matrix
const Matrix & Matrix :: input ( istream & is )
{
cout << "Input Matrix size: " << numRows << " rows by " << numCols << " columns \n" ;
for ( int i = 0 ; i < numRows ; i ++ )
{
cout << "Please enter " << numCols << " values separated by spaces for row no." << i+1
<< ": " ;
for ( int j = 0 ; j < numCols ; j ++ )
{
cin >> elements [ i ] [ j ] ;
}
}
return * this ;
}
Class Matrix
const Matrix & Matrix :: input ( ifstream & is )
{
int Rows , Cols ;
is >> Rows ;
is >> Cols ;
if ( Rows > 0 && Cols > 0 )
{
Matrix temp ( Rows , Cols ) ;
* this = temp ;
for ( int i = 0 ; i < numRows ; i ++ )
{
for ( int j = 0 ; j < numCols ; j ++ )
{
is >> elements [ i ] [ j ] ;
}
}
}
return * this ;
}
Class Matrix
const Matrix & Matrix :: transpose ( )
{
if ( numRows == numCols ) // Square Matrix
{
double temp ;
for ( int i = 0 ; i < numRows ; i ++ )
{
for ( int j = i + 1 ; j < numCols ; j ++ )
{
temp = elements [ i ] [ j ];
elements [ i ] [ j ] = elements [ j ] [ i ] ;
elements [ j ] [ i ] = temp ;
}
}
}
Class Matrix
else
{
Matrix temp(numCols, numRows);
for ( int i = 0 ; i < numRows ; i ++ )
{
for ( int j = 0 ; j < numCols ; j ++ )
{
temp.elements [ j ] [ i ] = elements [ i ] [
];
}
}
* this = temp ;
}
return * this ;
}

You might also like