#include<iostream.h>
#include<iomanip.h>
int main()
{
const int maxsize=10;
int matrix[maxsize][maxsize];
int i,j,rows,cols, swap;
bool quit=true;
char mop;
/*************Matrix Input Starts************/
do
{
cout<<"Enter No.of Rows Between 0 To 10: ";
cin>>rows;
if(rows<0 || rows>11)
cout<<"Please Enter in Range."<<endl;
}
while(rows<0 || rows>11);
do
{
cout<<"Enter No.of Cols Between 0 To 10 : ";
cin>>cols;
if(cols<0 || cols>11)
cout<<"Please Enter in Range."<<endl;
}
while(cols<0 || cols>11);
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
cout<<"Enter element at index["<<i<<"]["<<j<<"] ";
cin>>matrix[i][j];
}
}
cout<<endl<<"Orignal Matrix"<<endl;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
cout<<matrix[i][j]<<"\t";
}
cout<<endl;
}
/************* Matrix Input Ends ************/
cout<<endl<<endl;
/************* Matrix Operational Loop Starts ************/
while(quit)
{
do
{
cout<<endl;
cout<<setw(39)<<"Matrix Operations"<<endl;
cout<<setw(40)<<"Transpose : [T]"<<endl;
cout<<setw(40)<<"Insert : [I]"<<endl;
cout<<setw(40)<<"Delete : [D]"<<endl;
cout<<setw(40)<<"Find : [F]"<<endl;
cout<<setw(40)<<"Swap : [W]"<<endl;
cout<<setw(40)<<"Print : [P]"<<endl;
cout<<setw(40)<<"Quit : [Q]"<<endl;
cout<<setw(35)<<"Enter Option: ";
cin>>mop;
}
while(mop!='T' && mop!='t' && mop!='I' && mop!='i' && mop!='D' && mop!='d' && mop!='F'
&& mop!='f' && mop!='P' && mop!='p' && mop!='W' && mop!='w' && mop!='Q' && mop!='q');
cout<<endl<<endl;
switch(mop)
{
/***** CASE OT TRANSPOSE *****/
case 'T':
case 't':
{
int tmatrix[maxsize][maxsize];
swap=rows;
rows=cols;
cols=swap;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
tmatrix[i][j]=matrix[j][i];
}
}
for(i=0;i<=rows;i++)
{
for(j=0;j<cols;j++)
{
matrix[i][j]=tmatrix[i][j];
}
}
cout<<endl<<"Transposed Matrix"<<endl;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
cout<<matrix[i][j]<<"\t";
}
cout<<endl;
}
break;
}
/***** CASE OF INSERTION *****/
case 'I':
case 'i':
{
char ins;
int rowindex,colindex;
do
{
cout<<"Enter R To Insert Row OR C To Insert column: ";
cin>>ins;
if (ins!='R' && ins!='r' && ins!='C' && ins!='c')
{
cout<<endl<<"Enter Valid Input"<<endl<<endl;
}
}
while(ins!='R' && ins!='r' && ins!='C' && ins!='c');
switch(ins)
{
/***** CASE TO INSERT A ROW *****/
case 'R':
case 'r':
{
do
{
cout<<"Enter Index Where To Insert a Row: ";
cin>>rowindex;
}
while(rowindex>=rows+1);
for(i=rows;i>rowindex;i--)
{
for(j=0;j<cols;j++)
{
matrix[i][j]=matrix[i-1][j];
}
}
for(j=0;j<cols;j++)
{
cout<<"Enter Element At Index["<<rowindex<<"]["<<j<<"] ";
cin>>matrix[rowindex][j];
}
cout<<endl<<"Matrix After Inserting A Row"<<endl;
for(i=0;i<=rows;i++)
{
for(j=0;j<cols;j++)
{
cout<<matrix[i][j]<<"\t";
}
cout<<endl;
}
rows++;
break;
}
/***** CASE TO INSERT A COLUMN *****/
case 'C':
case 'c':
{
do
{
cout<<"Enter Index Where To Insert a Col: ";
cin>>colindex;
}
while(colindex>=cols+1);
for(i=0;i<rows;i++)
{
for(j=cols;j>colindex;j--)
{
matrix[i][j]=matrix[i][j-1];
}
}
for(i=0;i<rows;i++)
{
cout<<"Enter Element At Index["<<i<<"]["<<colindex<<"] ";
cin>>matrix[i][colindex];
}
cout<<endl<<"Matrix After Inserting A Column"<<endl;
for(i=0;i<rows;i++)
{
for(j=0;j<=cols;j++)
{
cout<<matrix[i][j]<<"\t";
}
cout<<endl;
}
cols++;
break;
}
}
break;
}
/***** CASE OF DELETION *****/
case 'D':
case 'd':
{;
char del;
int rowindex,colindex;
do
{
cout<<"Enter R To Delete Row OR C TO Delete Column: ";
cin>>del;
if(del!='R' && del!='r' && del!='C' && del!='c')
{
cout<<endl<<"Enter Valid Input"<<endl<<endl;
}
}
while(del!='R' && del!='r' && del!='C' && del!='c');
switch(del)
{
/***** CASE TO DELETE A ROW *****/
case 'R':
case 'r':
{
do
{
cout<<"Enter Row Index that You want to Delete: ";
cin>>rowindex;
}
while(rowindex<0 || rowindex>=rows);
for(i=rowindex;i<rows;i++)
{
for(j=0;j<cols;j++)
{
matrix[i][j]=matrix[i+1][j];
}
}
cout<<endl<<"Matrix After Deleting A Row"<<endl;
for(i=0;i<rows-1;i++)
{
for(j=0;j<cols;j++)
{
cout<<matrix[i][j]<<"\t";
}
cout<<endl;
}
rows--;
break;
}
/***** CASE TO DELETE A COLUMN *****/
case 'C':
case 'c':
{
do
{
cout<<"Enter Column Index that You want to Delete: ";
cin>>colindex;
}
while(colindex<0 || colindex>=cols);
for(i=0;i<rows;i++)
{
for(j=colindex;j<cols;j++)
{
matrix[i][j]=matrix[i][j+1];
}
}
cout<<endl<<"Matrix After Deleting A Column"<<endl;
for(i=0;i<rows;i++)
{
for(j=0;j<cols-1;j++)
{
cout<<matrix[i][j]<<"\t";
}
cout<<endl;
}
cols--;
break;
}
}
break;
}
/***** CASE OF FINDING A VALUE *****/
case 'F':
case 'f':
{
int value;
bool flag=false;
cout<<"Enter Value To Find In MAtrix: ";
cin>>value;
cout<<endl;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
if(matrix[i][j]==value)
{
cout<<"Value Placed At Index ["<<i<<"] ["<<j<<"]"<<endl;
flag=true;
}
}
}
if(!flag)
{
cout<<"Value Doesn't Found"<<endl;
}
break;
}
/***** CASE OF SWAPING *****/
case 'W':
case 'w':
{
char swap;
int temp;
do
{
cout<<"Enter R to Swap Row or C to Swap Column :";
cin>>swap;
if(swap!='r' && swap!='R' && swap!='c' && swap!='C')
cout<<"Invalid Option"<<endl;
}
while(swap!='r' && swap!='R' && swap!='c' && swap!='C');
switch(swap)
{
/***** CASE TO SWAP A ROW *****/
case 'R':
case 'r':
{
int index1,index2;
do
{
cout<<"Enter Index Of 1st Row To Swap Between 0-"<<rows-1<<": ";
cin>>index1;
if(index1<0 || index1>rows-1)
cout<<endl<<"Enter Valid Input"<<endl;
}
while(index1<0 || index1>rows-1);
do
{
cout<<"Enter Index Of 2nd Row To Swap Between 0-"<<rows-1<<": ";
cin>>index2;
if(index2<0 || index2>rows-1)
cout<<endl<<"Enter Valid Input"<<endl;
}
while(index2<0 || index2>rows-1);
for(i=index1;i==index1;i++)
{
for(j=0;j<cols;j++)
{
temp=matrix[i][j];
matrix[i][j]=matrix[index2][j];
matrix[index2][j]=temp;
}
}
cout<<endl<<"Matrix After Swapping Rows"<<endl;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
cout<<matrix[i][j]<<"\t";
}
cout<<endl;
}
break;
}
/***** CASE TO SWAP A COLUMN *****/
case 'C':
case 'c':
{
int index1,index2;
do
{
cout<<"Enter Index Of 1st Col To Swap Between 0-"<<cols-1<<": ";
cin>>index1;
if(index1<0 || index1>cols-1)
cout<<endl<<"Enter Valid Input"<<endl;
}
while(index1<0 || index1>cols-1);
do
{
cout<<"Enter Index Of 2nd Col To Swap Between 0-"<<cols-1<<": ";
cin>>index2;
if(index2<0 || index2>cols-1)
cout<<endl<<"Enter Valid Input"<<endl;
}
while(index2<0 || index2>cols-1);
for(j=index1;j==index1;j++)
{
for(i=0;i<cols;i++)
{
temp=matrix[i][j];
matrix[i][j]=matrix[i][index2];
matrix[i][index2]=temp;
}
}
cout<<endl<<"Matrix After Swapping Columns "<<endl;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
cout<<matrix[i][j]<<"\t";
}
cout<<endl;
}
break;
}
}
break;
}
/***** CASE OF PRINT *****/
case 'P':
case 'p':
{
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
cout<<matrix[i][j]<<"\t";
}
cout<<endl;
}
break;
}
/***** CASE OF QUIT *****/
case 'Q':
case 'q':
{
cout<<"Quiting Program"<<endl;
quit=false;
break;
}
}
}
/************ Matrix Operational Loop Ends ***********/
return 0;
}
Easy Programming Code ,free download software with keys,c++ toturial,c++ codes and much more....
Thursday, August 30, 2012
Matrix Operation in C++
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment