Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace lab4_tech_progr
- {
- class Program
- {
- class Matrix
- {
- private int size_ra;
- private int size_ca;
- private int size_rb;
- private int size_cb;
- private int[][] all;
- private int[][] a;
- private int[][] b;
- public Matrix(int size_ra, int size_ca, int size_rb, int size_cb)
- {
- this.size_ra = size_ra;
- this.size_ca = size_ca;
- this.size_rb = size_rb;
- this.size_cb = size_cb;
- a = new int[size_ra][];
- for (int i = 0; i < size_ra; i++)
- {
- a[i] = new int[size_ca];
- }
- b = new int[size_rb][];
- for (int i = 0; i < size_rb; i++)
- {
- b[i] = new int[size_cb];
- }
- all = new int[size_rb][];
- for (int i = 0; i < size_rb; i++)
- {
- all[i] = new int[size_cb];
- }
- }
- public void init_a()
- {
- Random rand = new Random();
- for (int i = 0; i < size_ra; i++)
- {
- for (int j = 0; j < size_ca; j++)
- {
- a[i][j] = rand.Next() % 12 - rand.Next() % 30;
- }
- }
- }
- public void init_b()
- {
- Random rand = new Random();
- for (int i = 0; i < size_rb; i++)
- {
- for (int j = 0; j < size_cb; j++)
- {
- b[i][j] = rand.Next() % 10 - rand.Next() % 10;
- }
- }
- }
- public void print_a()
- {
- for (int i = 0; i < size_ra; i++)
- {
- for (int j = 0; j < size_ca; j++)
- {
- Console.Write("{0}", a[i][j] + " ");
- }
- Console.WriteLine();
- }
- }
- public void print_b()
- {
- for (int i = 0; i < size_rb; i++)
- {
- for (int j = 0; j < size_cb; j++)
- {
- Console.Write("{0}", b[i][j] + " ");
- }
- Console.WriteLine();
- }
- }
- public void print_all()
- {
- for (int i = 0; i < size_ra; i++)
- {
- for (int j = 0; j < size_cb; j++)
- {
- Console.Write("{0}", all[i][j] + " ");
- }
- Console.WriteLine();
- }
- }
- public static Matrix operator +(Matrix a, Matrix b)
- {
- Matrix c = new Matrix(a.size_ra, a.size_ca, b.size_rb, b.size_cb);
- if ((a.size_ra == b.size_rb) && (a.size_ca == b.size_cb))
- {
- for (int i = 0; i < a.size_ra; i++)
- {
- for (int j = 0; j < a.size_ca; j++)
- {
- c.all[i][j] = 0;
- c.all[i][j] = a.a[i][j] + b.b[i][j];
- }
- }
- }
- return c;
- }
- public static Matrix operator *(Matrix a, Matrix b)
- {
- Matrix d = new Matrix(a.size_ra, a.size_ca, b.size_rb, b.size_cb);
- if (a.size_ca == b.size_rb)
- {
- for (int i = 0; i < a.size_ra; i++)
- {
- for (int j = 0; j < b.size_cb; j++)
- {
- d.all[i][j] = 0;
- for (int k = 0; k < b.size_rb; k++)
- {
- d.all[i][j] += a.a[i][j] * b.b[i][j];
- }
- }
- }
- }
- return d;
- }
- public static bool operator ==(Matrix a, Matrix b)
- {
- int s = 0;
- for (int i = 0, ii = 0; i < a.size_ra && ii < b.size_rb; i++, ii++)
- {
- for (int j = 0, jj = 0; j < a.size_cb && jj < b.size_cb; j++, jj++)
- {
- if (a.a[i][j] == b.b[ii][jj])
- {
- s = 0;
- }
- else
- {
- s++;
- }
- }
- }
- if (s != 0)
- {
- return false;
- }
- else
- {
- return a.Equals(b);
- }
- }
- public static bool operator !=(Matrix a, Matrix b)
- {
- return !a.Equals(b);
- }
- }
- public static void Main(string[] args)
- {
- int size_ra = 3;
- int size_ca = 4;
- int size_rb = 4;
- int size_cb = 3;
- Console.WriteLine("Marix A:");
- Matrix a = new Matrix(size_ra, size_ca, size_rb, size_cb);
- a.init_a();
- a.print_a();
- Console.WriteLine();
- Console.WriteLine("Matrix B:");
- Matrix b = new Matrix(size_ra, size_ca, size_rb, size_cb);
- b.init_b();
- b.print_b();
- Console.WriteLine();
- Console.WriteLine("Operation of matrix addition A and B:");
- Matrix c = a + b;
- c.print_all();
- Console.WriteLine();
- Console.WriteLine("Operation of matrix multiplication A and B:");
- Matrix d = a * b;
- d.print_all();
- Console.WriteLine();
- Console.Write("Result of operation equals: ");
- Console.Write(a == b ? "matrixes are same" : "matrixes aren't same");
- Console.Read();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement