Advertisement
Asenval

Untitled

Jan 24th, 2013
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.17 KB | None | 0 0
  1. using System;
  2.  
  3. class ClassMatrix
  4. {
  5.     static void Main()
  6.     {        
  7.         // testing the class functionality
  8.         int[,] matrix1 = new int[5,5]{
  9.             {5,3,5,8,1},
  10.             {6,8,1,-5,9},
  11.             {3,-5,8,-1,-3},
  12.             {2,0,-7,3,-4},
  13.             {5,-1,2,7,3}};
  14.         int[,] matrix2 = new int[5, 5]{
  15.             {1,5,5,-8,0},
  16.             {2,8,1,5,1},
  17.             {-2,5,8,-6,5},
  18.             {2,4,-7,9,-2},
  19.             {0,4,-3,-6,1}};
  20.         Matrix m1 = new Matrix(matrix1);
  21.         Matrix m2 = new Matrix(matrix2);
  22.  
  23.         Console.WriteLine("Matrix 1");
  24.         Console.WriteLine(m1);
  25.  
  26.         Console.WriteLine("Matrix 2");
  27.         Console.WriteLine(m2);
  28.  
  29.         Console.WriteLine("Adding Matrix");
  30.         Console.WriteLine(m1 + m2);
  31.  
  32.         Console.WriteLine("Substracting Matrix");
  33.         Console.WriteLine(m1 - m2);
  34.  
  35.         Console.WriteLine("Multiplying Matrix");
  36.         Console.WriteLine(m1 * m2);
  37.  
  38.         Console.WriteLine("Matrix Indexer");
  39.         Console.WriteLine(m1[2,2]);        
  40.     }
  41.    
  42. }
  43.  
  44. class Matrix
  45. {
  46.     private int[,] matrix;
  47.     private int rows;
  48.     private int columns;
  49.  
  50.     public Matrix(int x, int y)
  51.     {
  52.         matrix= new int[x, y];
  53.         this.rows = x;
  54.         this.columns = y;
  55.     }
  56.     public Matrix(int[,]matrix)
  57.     {
  58.         this.matrix = matrix;
  59.         this.rows = matrix.GetLength(0);
  60.         this.columns = matrix.GetLength(1);
  61.     }
  62.     //indexer
  63.     public int this[int x, int y]
  64.     {
  65.         get { return matrix[x, y]; }
  66.         set { matrix[x, y] = value; }
  67.     }
  68.  
  69.     // adding
  70.     public static Matrix operator +(Matrix matrixA, Matrix matrixB)
  71.     {
  72.         if (matrixA.rows != matrixB.rows && matrixA.columns != matrixB.columns)
  73.         {
  74.             throw new System.ArgumentException("Matrix must be with same dimentions", "original");          
  75.         }
  76.         Matrix matrixC = new Matrix (matrixA.rows, matrixA.columns);
  77.         for (int i = 0; i < matrixA.rows; i++)
  78.         {
  79.             for (int j = 0; j < matrixA.columns; j++)
  80.             {
  81.                 matrixC[i, j] = matrixA[i, j] + matrixB[i, j];
  82.             }
  83.         }
  84.  
  85.         return matrixC;
  86.     }
  87.     // substracting
  88.     public static Matrix operator -(Matrix matrixA, Matrix matrixB)
  89.     {
  90.         if (matrixA.rows != matrixB.rows && matrixA.columns != matrixB.columns)
  91.         {
  92.             throw new System.ArgumentException("Matrix must be with same dimentions", "original");
  93.         }
  94.         Matrix matrixC = new Matrix(matrixA.rows, matrixA.columns);
  95.         for (int i = 0; i < matrixA.rows; i++)
  96.         {
  97.             for (int j = 0; j < matrixA.columns; j++)
  98.             {
  99.                 matrixC[i, j] = matrixA[i, j] - matrixB[i, j];
  100.             }
  101.         }
  102.         return matrixC;
  103.     }
  104.     //multiplying
  105.     public static Matrix operator *(Matrix matrixA, Matrix matrixB)
  106.     {
  107.         if (matrixA.rows != matrixB.columns && matrixA.columns != matrixB.rows)
  108.         {
  109.             throw new System.ArgumentException("Matrix must be with same dimentions", "original");
  110.         }
  111.         Matrix matrixC = new Matrix(matrixA.rows, matrixA.columns);
  112.         for (int i = 0; i < matrixA.rows; i++)
  113.         {
  114.             for (int j = 0; j < matrixB.columns; j++)
  115.             {
  116.                 for (int row = 0; row < matrixA.columns; row++)
  117.                 {
  118.                     matrixC[i, j] += matrixA[i, row] * matrixB[row, j];
  119.                 }                
  120.             }
  121.         }
  122.  
  123.         return matrixC;
  124.     }
  125.  
  126.     public override string ToString()
  127.     {
  128.         string str = String.Empty;
  129.         for (int i = 0; i < rows; i++)
  130.         {
  131.             for (int j = 0; j < columns; j++)
  132.             {
  133.                 if (j == 0)
  134.                 {
  135.                     str += "|".PadRight(3);
  136.                 }
  137.                 str += Convert.ToString(matrix[i, j]).PadRight(3);
  138.                 str += "|".PadRight(3);
  139.             }
  140.             str+="\n";
  141.             for (int j = 0; j < rows; j++)
  142.             {
  143.                 str += "------";
  144.             }
  145.             str += "\n";
  146.         }
  147.        
  148.         return str;
  149.     }
  150.    
  151.    
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement