środa, stycznia 05, 2011

Mnozenie i dodawanie macierzy.

static void Main(string[] args)
        {
            int wybor;
            Console.WriteLine("1. Dodaj macierze");
            Console.WriteLine("2. Pomnoz macierze");
            Console.Write("\nTwoj wybor to: ");
            wybor = int.Parse(Console.ReadLine());
            switch (wybor)
            {
                case 1:
                    dodawanie();
                    break;
                case 2:
                    mnozenie();
                    break;
                default:
                    Console.WriteLine("Wybierz od 1 do 2");
                    Console.ReadKey();
                    break;
            }
        }
        private new static void dodawanie()
        {
            int x, y, x1, x2, a, b;
            double[,] tabA = new double[100, 100];
            double[,] tabB = new double[100, 100];
            double[,] tabC = new double[100, 100];
            Console.WriteLine("Max wymiary macierzy wynosza 100x100.\n\n");
            Console.WriteLine("Podaj wymiar macierzy A: ");
            x = int.Parse(Console.ReadLine());
            Console.WriteLine("x");
            y = int.Parse(Console.ReadLine());
            a = x + y;
            Console.WriteLine("Macierz A sklada sie z {0} elementow. Podaj je wszystkie: \n", a);
            for (int i = 0; i < x; i++)
            {
                for (int j = 0; j < y; j++)
                {
                    tabA[i, j] = int.Parse(Console.ReadLine());
                }
            }
            Console.WriteLine("Podaj wymiar macierzy B: ");
            x1 = int.Parse(Console.ReadLine());
            x2 = int.Parse(Console.ReadLine());
            b = x1 + x2;
            Console.WriteLine("Macierz B sklada sie z {0} elementow. Podaj je wszystkie: \n", b);
            for (int i = 0; i < x1; i++)
            {
                for (int j = 0; j < x2; j++)
                {
                    tabB[i, j] = int.Parse(Console.ReadLine());
                }
            }
            Console.Clear();
            Console.WriteLine("Dodawanie macierzy A+B\n");
            if (x == x1 && y == x2)
            {
                for (int i = 0; i < x; i++)
                {
                    for (int j = 0; j < y; j++)
                    {
                        tabC[i, j] = tabA[i, j] + tabB[i, j];
                    }
                }
                for (int i = 0; i < x; i++)
                {
                    for (int j = 0; j < y; j++)
                    {
                        Console.Write("\t" + tabC[i, j]);
                    }
                    Console.WriteLine();
                }
            }
            else
            {
                Console.WriteLine("Nie mozna dodać macierzy A i B!!!\n");
            }
            Console.Read();
        }
        private new static void mnozenie()
        {
            int x, y, x1, x2, a, b;
            double[,] tabA = new double[100, 100];
            double[,] tabB = new double[100, 100];
            double[,] tabC = new double[100, 100];
            Console.WriteLine("Max wymiary macierzy wynosza 100x100.\n\n");
            Console.WriteLine("Podaj wymiar macierzy A: ");
            x = int.Parse(Console.ReadLine());
            Console.WriteLine("x");
            y = int.Parse(Console.ReadLine());
            a = x + y;
            Console.WriteLine("Macierz A sklada sie z {0} elementow. Podaj je wszystkie: \n", a);
            for (int i = 0; i < x; i++)
            {
                for (int j = 0; j < y; j++)
                {
                    tabA[i, j] = int.Parse(Console.ReadLine());
                }
            }
            Console.WriteLine("Podaj wymiar macierzy B: ");
            x1 = int.Parse(Console.ReadLine());
            x2 = int.Parse(Console.ReadLine());
            b = x1 + x2;
            Console.WriteLine("Macierz B sklada sie z {0} elementow. Podaj je wszystkie: \n", b);
            for (int i = 0; i < x1; i++)
            {
                for (int j = 0; j < x2; j++)
                {
                    tabB[i, j] = int.Parse(Console.ReadLine());
                }
            }
            Console.Clear();
            Console.WriteLine("Mnożenie macierzy A*B\n");
            double suma = 0;
            if (y == x1)
            {
                for (int i = 0; i < x; i++)
                {
                    for (int k = 0; k < x2; k++)
                    {
                        for (int j = 0; j < y; j++)
                        {
                            suma = suma + tabA[i, j] * tabB[j, k];
                            tabC[i, k] = suma;
                        }
                    }
                }
                for (int i = 0; i < x; i++)
                {
                    for (int k = 0; k < x2; k++)
                    {
                        Console.Write("\t" + tabC[i, k]);
                    }
                    Console.WriteLine();
                }
            }
            else
            {
                Console.WriteLine("Nie można pomnozyć macierzy A i B");
            }
            Console.ReadLine();
        }

Brak komentarzy:

Prześlij komentarz

Szukaj na tym blogu