예제 #1
0
        public static int LaufzeitErmittlungMult(int minuten, int initGroesse)
        {
            int            intervall = 100;
            Aufgabe3Matrix a;
            Aufgabe3Matrix b;

            do
            {
                a = new Aufgabe3Matrix(initGroesse, initGroesse);
                a.RandomFill();

                b = new Aufgabe3Matrix(initGroesse, initGroesse);
                b.RandomFill();

                a.Mult(b);

                Console.WriteLine($"Akt. Größe: {initGroesse} und Laufzeit: {a.Laufzeit}");
                if (a.Laufzeit.TotalMilliseconds - minuten * 60 * 1000 > 1000)
                {
                    intervall  /= 2;
                    initGroesse = initGroesse - intervall;
                }
                else if (a.Laufzeit.TotalMilliseconds - minuten * 60 * 1000 < 0)
                {
                    intervall  *= 2;
                    initGroesse = initGroesse + intervall;
                }
                Console.WriteLine($"Akt. Größe: {initGroesse}");
            } while ((a.Laufzeit.TotalMilliseconds - minuten * 60 * 1000 > 1000) || (a.Laufzeit.TotalMilliseconds - minuten * 60 * 1000 < 0));

            return(initGroesse);
        }
예제 #2
0
        public Aufgabe3Matrix Add(Aufgabe3Matrix b)
        {
            Stopwatch s = new Stopwatch();

            s.Start();
            Schritte = 0;
            if (b.M != M || b.N != N)
            {
                throw new Exception("Kann nicht addiert werden.");
            }
            Aufgabe3Matrix erg = new Aufgabe3Matrix(M, N);

            for (int i = 0; i < M; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    Schritte++;
                    erg.Matrix[i, j] = Matrix[i, j] + b.Matrix[i, j];
                }
            }
            s.Stop();
            Laufzeit   = s.Elapsed;
            b.Laufzeit = s.Elapsed;
            b.Schritte = Schritte;

            return(erg);
        }
예제 #3
0
        public Aufgabe3Matrix Mult(Aufgabe3Matrix b)
        {
            Stopwatch s = new Stopwatch();

            s.Start();
            Schritte = 0;
            if (N != b.M)
            {
                throw new Exception("Kann nicht Multipliziert werden.");
            }
            Aufgabe3Matrix erg = new Aufgabe3Matrix(M, b.N);

            for (int i = 0; i < b.N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    for (int k = 0; k < N; k++)
                    {
                        Schritte++;
                        erg.Matrix[j, i] += Matrix[j, k] * b.Matrix[k, i];
                    }
                }
            }
            s.Stop();
            Laufzeit   = s.Elapsed;
            b.Laufzeit = s.Elapsed;
            b.Schritte = Schritte;

            return(erg);
        }