1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

have some problem in C++ matrix

Discussion in 'C++' started by Edge89, May 6, 2008.

  1. Edge89

    Edge89 New Member

    Joined:
    May 6, 2008
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    0
    i would like to make a code for matrix. the value of both matrix is random and the addition, subtraction,multiply and transpose function. i have some problem in the multiply fucntion, can someone help ?? thank! :p
    Code:
    #include <iostream>
    #include <ctime>
    
    using namespace std;
    
    typedef struct{
    	int x[3][3];
    	
    }Matrix3X3;
    
    [COLOR=Green]//prototype[/COLOR]
    bool isEqual (Matrix3X3 A, Matrix3X3 B);
    bool isSameDimension (Matrix3X3 A, Matrix3X3 B);
    bool isDefined (Matrix3X3 A, Matrix3X3 B);
    Matrix3X3 addMatrices (Matrix3X3 A, Matrix3X3 B);
    Matrix3X3 subtractMatrices (Matrix3X3 A, Matrix3X3 B);
    Matrix3X3 multiplyMatrices (Matrix3X3 A, Matrix3X3 B);
    Matrix3X3 transposeMatrix (Matrix3X3 A);
    
    	void main(){
    		Matrix3X3 A;
    		Matrix3X3 B;
    
    		[COLOR=Green]// initialise the matrix[/COLOR]
    		for (int i=0;i<3;i++){
    			for (int j=0;j<3;j++){
    				A.x[i][j] = (rand()*time(0))% 100;
    		        B.x[i][j] = (rand()*time(0))% 100;
    			}
    		}
    
         [COLOR=Green]   // print out the matrix A[/COLOR]
    		cout<<"Matrix A"<<endl;
    		for (int i=0;i<3;i++){
    			for (int j=0;j<3;j++){
    				cout<<A.x[i][j]<< " ";
    	}
    	cout<<endl;
    	}
            [COLOR=Green] // print out the matrix B  [/COLOR] 
    		cout<<"\nMatrix B"<<endl;
    		for (int i=0;i<3;i++){
    			for (int j=0;j<3;j++){
    				cout<<B.x[i][j]<< " ";
    	}
    	cout<<endl;
    	}
    addMatrices (A,B);
    subtractMatrices (A,B);
    [COLOR=Green]//multiplyMatrices (A,B);[/COLOR]
    transposeMatrix (A);
    
    	cin.get();
    	}
    	Matrix3X3 transposeMatrix (Matrix3X3 A){
    		Matrix3X3 answer;
    		[COLOR=Green]//transpose the matrix[/COLOR]
    		for(int i = 0;i<3;i++) { 
              for(int j=0;j<3;j++) { 
                  answer.x[i][j] = A.x[j][i]; 
               }
           }
    		cout<<"\nThe Transpose Results:"<<endl;
    	      for(int i = 0;i<3;i++){
    		  for(int j=0;j<3;j++){
    			cout <<answer.x[i][j] << "\t" ;
    			} cout <<endl;
    		  }
    		return answer;
    	}
    	Matrix3X3 multiplyMatrices (Matrix3X3 A, Matrix3X3 B){
    		Matrix3X3 answer;
    [COLOR=Green]		//before multipllication process, try to check against the 2 matrices are defined
    		//or not (use isDefined method        
    	
    	[/COLOR]
    	return answer;
    	}
    	
    	Matrix3X3 subtractMatrices (Matrix3X3 A, Matrix3X3 B){
    		Matrix3X3 answer;
          [COLOR=Green]  //before subtraction process, try to check against the dimension[/COLOR]
    		
    		   for(int i = 0;i<3;i++){
             for(int j=0;j<3;j++){ 
                answer.x[i][j] = (A.x[i][j] - B.x[i][j]);
    			}
    		   }
    		   cout<<"\nThe Subtraction Results:"<<endl;
    	      for(int i = 0;i<3;i++){
    		  for(int j=0;j<3;j++){
    			cout <<answer.x[i][j] << "\t" ;
    			} cout <<endl;
    		  } return answer;
    		}		
    	
    	Matrix3X3 addMatrices (Matrix3X3 A, Matrix3X3 B){
    		Matrix3X3 answer;
          
          for(int i = 0;i<3;i++){
             for(int j=0;j<3;j++){ 
                answer.x[i][j] = (A.x[i][j] + B.x[i][j]);
    			}
    		
    	  }
         
    	  cout<<"\nThe Addition Results:"<<endl;
    	      for(int i = 0;i<3;i++){
    		  for(int j=0;j<3;j++){
    			cout <<answer.x[i][j] << "\t" ;
    			} cout <<endl;
    		  } return answer;
    		}		
    	
    	
    bool isDefined (Matrix3X3 A, Matrix3X3 B){
    		
    [COLOR=Green]		//make sure the first matrix row is column to seceond matrix row, then 2 matrices only
            // considered multipilicable[/COLOR]
    return true;
    }
    bool isSameDimension (Matrix3X3 A, Matrix3X3 B)
    {
    	    
    [COLOR=Green]    //first check the dimension
    	//if deimension is not equal then return false else proceed[/COLOR]
    return true;
    	} 
    	[COLOR=Green]//function body[/COLOR]
    bool isEqual (Matrix3X3 A, Matrix3X3 B){
    		if (isSameDimension(A,B)){
    [COLOR=Green]	
    	//loop thru 2 matrices and check each coontent
        //if one of the entry is not equal then return false
    	//if finish loop then return true.[/COLOR]
    		}
    		else{
    			cout<<"The matrix dimension is not equal"<<endl;
    			return false;
    		}
    		return true;
    	}
     
    Last edited by a moderator: May 7, 2008
  2. mr.anandc

    mr.anandc New Member

    Joined:
    May 6, 2008
    Messages:
    18
    Likes Received:
    0
    Trophy Points:
    0
    Multiplication function could be.....

    Matrix3X3 multiplyMatrices (Matrix3X3 A, Matrix3X3 B){
    Matrix3X3 answer;
    Code:
    for(int i = 0;i<3;i++){
    for(int j=0;j<3;j++){ 
    answer.x[i][j] = 0;
    for (int k = 0; k<3; k++){
    answer.x[i][j] += (A.x[i][k] * B.x[k][j]);
    }
    }
    }
    
    cout<<"\nThe Multiplication Results:"<<endl;
    for(int i = 0;i<3;i++){
    for(int j=0;j<3;j++){
    cout <<answer.x[i][j] << "\t" ;
    } cout <<endl;
    } return answer;
    } 
    :)
     
    Last edited by a moderator: May 7, 2008
  3. Edge89

    Edge89 New Member

    Joined:
    May 6, 2008
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    0
    Yeah...i know it. my problem is at below tat boolean function, it make my multiply function cant work.... i need some help at there. thx
     
  4. mr.anandc

    mr.anandc New Member

    Joined:
    May 6, 2008
    Messages:
    18
    Likes Received:
    0
    Trophy Points:
    0
    Ok. Before multiplying matrices A and B, you want to check whether columns in matrix A matches with rows in matrix B in IsDefined function. But I think this is not required in your case because matrix size is hard-coded to [3][3] in which rows and colums are equal to 3.
     
  5. Edge89

    Edge89 New Member

    Joined:
    May 6, 2008
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    0
    Ya....my matrix size is setted [3][3] but i still need to write it out. i not so good in boolean and i am so confuse in those 3 boolean function..can you give me an example or tips? thx!
     

Share This Page