C# Macierz

0

Witam. Mam za zadanie stworzenie programu mnożącego macierze. W programie musi znajdować się pętla Parallel. Udało mi się stworzyć program z mnożeniem macierzy jednak nie wiem jak wykorzystać podaną pętle. Podaje kod obliczający działanie. Jak mogę przerobić pętle for na Parallel.For?

Console.WriteLine("\nMnozenie macierzy C=AxB:");
            for (int i = 0; i < n; i++)
            {
                for (int k = 0; k < d; k++)
                {
                    for (int j = 0; j < b; j++)
                    {
                        m1m2[i, k] += m1[i, j] * m2[j, k];
                    }
                }
            }

            Console.WriteLine("\nC: ");
            for (int i = 0; i < n; i++)
            {
                for (int k = 0; k < d; k++)
                {
                    Console.Write("{0} ", m1m2[i, k]);
                }
                Console.WriteLine("");
            }
0
lion137 napisał(a):

O jaką Parallel loop chodzi?
https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.parallel.for?view=netframework-4.8
https://www.google.com/search?client=ubuntu&channel=fs&q=parallel+loop+c%23&ie=utf-8&oe=utf-8

Mam za zadanie wykorzystanie Parallel.for program ma być współbieżny niestety nie wiem nic więcej :/ nie zostało to wyjaśnione dokładnie

0

Przejrzyj linki, które podałem (edytowałem, też post).

0
lion137 napisał(a):

Przejrzyj linki, które podałem (edytowałem, też post).

spróbuje , jednak wydaje mi się to bardzo skomplikowane.

0

Po przerobieniu kodu program wykonuje się ale wyświetla mi dziwne rzeczy.

A:
1 1
1 1

B:
1 1
1 1

Mnozenie macierzy C=AxB:
System.Int32[,]

       Console.WriteLine("\nMnozenie macierzy C=AxB:");
            void ParMatrixMult(int size, double[,] m1,double[,] m2, double[,] m1m2)
            {
                Parallel.For(0, size, delegate (int i)
                {
                    for (int j = 0; j < size; j++)
                    {
                        m1m2[i, j] = 0;
                        for (int k = 0; k < size; k++)
                        {
                            m1m2[i, j] += m1[i, k] * m2[k, j];

                        }

                    };

                });
                
            }


            Console.WriteLine (m1m2);
0
arlexis napisał(a):

Po przerobieniu kodu program wykonuje się ale wyświetla mi dziwne rzeczy.

Kolego, gdybyś spojrzał w linki podesłane przez kolegę lion137 to miałbyś rozwiązanie gotowe. Wystarczy spojrzeć na pierwsze strony w google i masz gotowca, na którym możesz się wzorować.

0

Rozumiem że są dostępne gotowe programy tego typu, jednak mi chodzi o samodzielne wprowadzanie wartości do macierz a nie losowych wartościach oraz chcę nauczyć się czegoś nowego dlatego pytam o poradę... nie szukam gotowych rozwiązań których znaczenia nie rozumiem...

1 użytkowników online, w tym zalogowanych: 0, gości: 1