⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.cs

📁 Data Structures and Algorithms with Object-Oriented Design Patterns in C# 这本书的范例代码dll自己反编译的source
💻 CS
字号:
namespace Opus6
{
    using System;
    using System.Reflection;

    [Version("$Id: Matrix.cs,v 1.6 2001/10/28 19:50:09 brpreiss Exp $"), Copyright("Copyright (c) 2001 by Bruno R. Preiss, P.Eng.")]
    public abstract class Matrix
    {
        protected Matrix()
        {
        }

        public static Matrix operator +(Matrix m1, Matrix m2)
        {
            return m1.Plus(m2);
        }

        public static Matrix operator *(Matrix m1, Matrix m2)
        {
            return m1.Times(m2);
        }

        public abstract Matrix Plus(Matrix matrix);
        internal static void TestMatrix(Matrix mat)
        {
            Opus6.Console.WriteLine("Matrix Test ({0})", mat.GetType().FullName);
            int num1 = 0;
            for (int num2 = 0; num2 < mat.Rows; num2++)
            {
                for (int num3 = 0; num3 < mat.Columns; num3++)
                {
                    mat[num2, num3] = num1++;
                }
            }
            for (int num4 = 0; num4 < mat.Rows; num4++)
            {
                for (int num5 = 0; num5 < mat.Columns; num5++)
                {
                    Opus6.Console.Write("{0} ", mat[num4, num5]);
                }
                Opus6.Console.WriteLine();
            }
            mat += mat;
            for (int num6 = 0; num6 < mat.Rows; num6++)
            {
                for (int num7 = 0; num7 < mat.Columns; num7++)
                {
                    Opus6.Console.Write("{0} ", mat[num6, num7]);
                }
                Opus6.Console.WriteLine();
            }
        }

        internal static void TestTimes(Matrix mat1, Matrix mat2)
        {
            Opus6.Console.WriteLine("Multiply Test ({0})", mat1.GetType().FullName);
            mat1[0, 0] = 1;
            mat1[0, 1] = 2;
            mat1[0, 2] = 3;
            mat2[0, 0] = 1;
            mat2[1, 0] = 2;
            mat2[2, 0] = 3;
            for (int num1 = 0; num1 < mat1.Rows; num1++)
            {
                for (int num2 = 0; num2 < mat1.Columns; num2++)
                {
                    Opus6.Console.Write("{0} ", mat1[num1, num2]);
                }
                Opus6.Console.WriteLine();
            }
            for (int num3 = 0; num3 < mat2.Rows; num3++)
            {
                for (int num4 = 0; num4 < mat2.Columns; num4++)
                {
                    Opus6.Console.Write("{0} ", mat2[num3, num4]);
                }
                Opus6.Console.WriteLine();
            }
            mat1 = mat2 * mat1;
            for (int num5 = 0; num5 < mat1.Rows; num5++)
            {
                for (int num6 = 0; num6 < mat1.Columns; num6++)
                {
                    Opus6.Console.Write("{0} ", mat1[num5, num6]);
                }
                Opus6.Console.WriteLine();
            }
        }

        internal static void TestTranspose(Matrix mat)
        {
            Opus6.Console.WriteLine("Transpose Test ({0})", mat.GetType().FullName);
            mat[0, 0] = 31;
            mat[0, 2] = 41;
            mat[0, 3] = 59;
            mat[1, 1] = 26;
            mat[2, 3] = 53;
            mat[2, 4] = 58;
            mat[4, 2] = 97;
            mat[5, 1] = 93;
            mat[5, 5] = 23;
            for (int num1 = 0; num1 < mat.Rows; num1++)
            {
                for (int num2 = 0; num2 < mat.Columns; num2++)
                {
                    Opus6.Console.Write("{0} ", mat[num1, num2]);
                }
                Opus6.Console.WriteLine();
            }
            mat[2, 4] = 0;
            mat[5, 3] = 0;
            mat = mat.Transpose;
            for (int num3 = 0; num3 < mat.Rows; num3++)
            {
                for (int num4 = 0; num4 < mat.Columns; num4++)
                {
                    Opus6.Console.Write("{0} ", mat[num3, num4]);
                }
                Opus6.Console.WriteLine();
            }
        }

        public abstract Matrix Times(Matrix matrix);

        public abstract int Columns { get; }

        public abstract double this[int i, int j] { get; set; }

        public abstract int Rows { get; }

        public abstract Matrix Transpose { get; }

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -