Advertisement
Guest User

Untitled

a guest
Jan 15th, 2013
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Text;
  3.  
  4. class OperatorOverloading
  5. {
  6.  
  7. public class Matrix
  8. {
  9. private int rows;
  10. private int cols;
  11. private int[,] matrix;
  12.  
  13. public Matrix(int x, int y)
  14. {
  15. rows = x;
  16. cols = y;
  17. matrix = new int[rows,cols];
  18. }
  19.  
  20. public int this[int x, int y]
  21. {
  22. get
  23. {
  24. return matrix[x, y];
  25. }
  26. set
  27. {
  28. matrix[x, y] = value;
  29. }
  30. }
  31.  
  32. public int getRows()
  33. {
  34. return rows;
  35. }
  36.  
  37. public int getCols()
  38. {
  39. return cols;
  40. }
  41.  
  42. public static Matrix operator +( Matrix first, Matrix second) {
  43. if (first.getRows() != second.getRows() || first.getCols() != second.getCols()) {
  44. throw new Exception("Matrices must have the same dimensions!");
  45. }
  46.  
  47. Matrix result = new Matrix(first.getRows(), first.getCols());
  48.  
  49. for (int i = 0; i < first.matrix.GetLength(0); i++)
  50. {
  51. for (int j = 0; j < second.matrix.GetLength(1); j++)
  52. {
  53. result[i, j] = first[i, j] + second[i, j];
  54. }
  55. }
  56. return result;
  57. }
  58.  
  59. public static Matrix operator -(Matrix first, Matrix second)
  60. {
  61. if (first.getRows() != second.getRows() || first.getCols() != second.getCols())
  62. {
  63. throw new Exception("Matrices must have the same dimensions!");
  64. }
  65.  
  66. Matrix result = new Matrix(first.getRows(), first.getCols());
  67.  
  68. for (int i = 0; i < first.matrix.GetLength(0); i++)
  69. {
  70. for (int j = 0; j < second.matrix.GetLength(1); j++)
  71. {
  72. result[i, j] = first[i, j] - second[i, j];
  73. }
  74. }
  75. return result;
  76. }
  77.  
  78. public static Matrix operator *(Matrix first, Matrix second)
  79. {
  80. if (first.getRows() != second.getRows() || first.getCols() != second.getCols())
  81. {
  82. throw new Exception("Matrices must have the same dimensions!");
  83. }
  84.  
  85. Matrix result = new Matrix(first.getRows(), first.getCols());
  86.  
  87. for (int i = 0; i < first.matrix.GetLength(0); i++)
  88. {
  89. for (int j = 0; j < second.matrix.GetLength(1); j++)
  90. {
  91. result[i, j] = first[i, j] * second[i, j];
  92. }
  93. }
  94. return result;
  95. }
  96.  
  97. public override string ToString()
  98. {
  99. StringBuilder matrixToString = new StringBuilder();
  100.  
  101. for (int i = 0; i < rows; i++)
  102. {
  103. for (int j = 0; j < cols; j++)
  104. {
  105. matrixToString.Append(String.Format("{0} ", matrix[i,j]));
  106. }
  107. matrixToString.Append("\n");
  108. }
  109.  
  110. return matrixToString.ToString();
  111. }
  112.  
  113. }
  114.  
  115. static void Main(string[] args)
  116. {
  117. Matrix a = new Matrix(4, 4);
  118. Matrix b = new Matrix(4, 4);
  119. Matrix result;
  120.  
  121. //tests - entering some random-ish data
  122. int counter = 1;
  123. for (int i = 0; i < a.getCols(); i++)
  124. {
  125. for (int j = 0; j < a.getRows(); j++)
  126. {
  127. a[i, j] = counter;
  128. b[i, j] = j + counter;
  129. counter++;
  130. }
  131. }
  132.  
  133. //printing the test matrices
  134. Console.WriteLine(a);
  135. Console.WriteLine(b);
  136.  
  137. result = a + b;
  138. Console.WriteLine("Addition:");
  139. Console.WriteLine(result);
  140.  
  141. result = a - b;
  142. Console.WriteLine("Subtraction:");
  143. Console.WriteLine(result);
  144.  
  145. result = a * b;
  146. Console.WriteLine("Multiplication:");
  147. Console.WriteLine(result);
  148. }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement