Advertisement
Guest User

lab4_t_p_2

a guest
Oct 23rd, 2014
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.47 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace lab4_tech_progr
  8. {
  9.     class Program
  10.     {
  11.         class Matrix
  12.         {
  13.             private int size_ra;
  14.             private int size_ca;
  15.             private int size_rb;
  16.             private int size_cb;
  17.             private int[][] all;
  18.             private int[][] a;
  19.             private int[][] b;
  20.             public Matrix(int size_ra, int size_ca, int size_rb, int size_cb)
  21.             {
  22.                 this.size_ra = size_ra;
  23.                 this.size_ca = size_ca;
  24.                 this.size_rb = size_rb;
  25.                 this.size_cb = size_cb;
  26.                 a = new int[size_ra][];
  27.                 for (int i = 0; i < size_ra; i++)
  28.                 {
  29.                     a[i] = new int[size_ca];
  30.                 }
  31.                 b = new int[size_rb][];
  32.                 for (int i = 0; i < size_rb; i++)
  33.                 {
  34.                     b[i] = new int[size_cb];
  35.                 }
  36.                 all = new int[size_rb][];
  37.                 for (int i = 0; i < size_rb; i++)
  38.                 {
  39.                     all[i] = new int[size_cb];
  40.                 }
  41.             }
  42.             public void init_a()
  43.             {
  44.                 Random rand = new Random();
  45.                 for (int i = 0; i < size_ra; i++)
  46.                 {
  47.                     for (int j = 0; j < size_ca; j++)
  48.                     {
  49.                         a[i][j] = rand.Next() % 12 - rand.Next() % 30;
  50.                     }
  51.                 }
  52.             }
  53.             public void init_b()
  54.             {
  55.                 Random rand = new Random();
  56.                 for (int i = 0; i < size_rb; i++)
  57.                 {
  58.                     for (int j = 0; j < size_cb; j++)
  59.                     {
  60.                         b[i][j] = rand.Next() % 10 - rand.Next() % 10;
  61.                     }
  62.                 }
  63.             }
  64.             public void print_a()
  65.             {
  66.                 for (int i = 0; i < size_ra; i++)
  67.                 {
  68.                     for (int j = 0; j < size_ca; j++)
  69.                     {
  70.                         Console.Write("{0}", a[i][j] + " ");
  71.                     }
  72.                     Console.WriteLine();
  73.                 }
  74.             }
  75.             public void print_b()
  76.             {
  77.                 for (int i = 0; i < size_rb; i++)
  78.                 {
  79.                     for (int j = 0; j < size_cb; j++)
  80.                     {
  81.                         Console.Write("{0}", b[i][j] + " ");
  82.                     }
  83.                     Console.WriteLine();
  84.                 }
  85.             }
  86.             public void print_all()
  87.             {
  88.                 for (int i = 0; i < size_ra; i++)
  89.                 {
  90.                     for (int j = 0; j < size_cb; j++)
  91.                     {
  92.                         Console.Write("{0}", all[i][j] + " ");
  93.                     }
  94.                     Console.WriteLine();
  95.                 }
  96.             }
  97.             public static Matrix operator +(Matrix a, Matrix b)
  98.             {
  99.                 Matrix c = new Matrix(a.size_ra, a.size_ca, b.size_rb, b.size_cb);
  100.                 if ((a.size_ra == b.size_rb) && (a.size_ca == b.size_cb))
  101.                 {
  102.                     for (int i = 0; i < a.size_ra; i++)
  103.                     {
  104.                         for (int j = 0; j < a.size_ca; j++)
  105.                         {
  106.                             c.all[i][j] = 0;
  107.                             c.all[i][j] = a.a[i][j] + b.b[i][j];
  108.                         }
  109.                     }
  110.                 }
  111.                 return c;
  112.             }
  113.             public static Matrix operator *(Matrix a, Matrix b)
  114.             {
  115.                 Matrix d = new Matrix(a.size_ra, a.size_ca, b.size_rb, b.size_cb);
  116.                 if (a.size_ca == b.size_rb)
  117.                 {
  118.                    
  119.                     for (int i = 0; i < a.size_ra; i++)
  120.                     {
  121.                         for (int j = 0; j < b.size_cb; j++)
  122.                         {
  123.                             d.all[i][j] = 0;
  124.                             for (int k = 0; k < b.size_rb; k++)
  125.                             {
  126.                                 d.all[i][j] += a.a[i][j] * b.b[i][j];
  127.                             }
  128.                         }
  129.                     }
  130.                 }
  131.                 return d;
  132.             }
  133.             public static bool operator ==(Matrix a, Matrix b)
  134.             {
  135.                 int s = 0;
  136.                 for (int i = 0, ii = 0; i < a.size_ra && ii < b.size_rb; i++, ii++)
  137.                 {
  138.                     for (int j = 0, jj = 0; j < a.size_cb && jj < b.size_cb; j++, jj++)
  139.                     {
  140.                         if (a.a[i][j] == b.b[ii][jj])
  141.                         {
  142.                             s = 0;
  143.                         }
  144.                         else
  145.                         {
  146.                             s++;
  147.                         }
  148.                     }
  149.                 }
  150.                 if (s != 0)
  151.                 {
  152.                     return false;
  153.                 }
  154.                 else
  155.                 {
  156.                     return a.Equals(b);
  157.                 }
  158.             }
  159.             public static bool operator !=(Matrix a, Matrix b)
  160.             {
  161.                 return !a.Equals(b);          
  162.             }
  163.         }
  164.         public static void Main(string[] args)
  165.         {
  166.             int size_ra = 3;
  167.             int size_ca = 4;
  168.             int size_rb = 4;
  169.             int size_cb = 3;
  170.             Console.WriteLine("Marix A:");
  171.             Matrix a = new Matrix(size_ra, size_ca, size_rb, size_cb);
  172.             a.init_a();
  173.             a.print_a();
  174.             Console.WriteLine();
  175.             Console.WriteLine("Matrix B:");
  176.             Matrix b = new Matrix(size_ra, size_ca, size_rb, size_cb);            
  177.             b.init_b();
  178.             b.print_b();
  179.             Console.WriteLine();
  180.             Console.WriteLine("Operation of matrix addition A and B:");
  181.             Matrix c = a + b;
  182.             c.print_all();
  183.             Console.WriteLine();
  184.             Console.WriteLine("Operation of matrix multiplication A and B:");
  185.             Matrix d = a * b;
  186.             d.print_all();
  187.             Console.WriteLine();
  188.             Console.Write("Result of operation equals: ");
  189.             Console.Write(a == b ? "matrixes are same" : "matrixes aren't same");
  190.             Console.Read();
  191.         }
  192.     }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement