矩阵乘法

复制代码
  static void Main(string[] args)
        {
            Console.WriteLine("请录入第一个数组:");
            double[,] arr1 = InputArr();
            Console.WriteLine("请录入第二个数组:");
            double[,] arr2 = InputArr();
            int rowsCount = arr1.GetLength(0);
            int colsCount = arr2.GetLength(1);
            int comCount = arr1.GetLength(1);
            int[,] result = new int[rowsCount, colsCount];
            Console.WriteLine("两个数组的乘积为:");
            for (int i = 0; i < rowsCount; i++)
            {
                for (int j = 0; j < colsCount; j++)
                {
                    Console.Write("\t{0}", GetResult(i, j, comCount, arr1, arr2));
                }
                Console.WriteLine();
            }
            Console.ReadLine();

        }
        private static double[,] InputArr()
        {
            try
            {
                Console.WriteLine("请输入数组结构,例如:4,2");
                string[] arrLen = Console.ReadLine().Split(',');
                int rowsLen = Convert.ToInt32(arrLen[0]);
                int colsLen = Convert.ToInt32(arrLen[1]);
                double[,] result = new double[rowsLen, colsLen];
                Console.WriteLine("请输入每一行数据,例如:1,2,3,4,7,8");
                for (int i = 0; i < rowsLen; i++)
                {
                    string[] row = Console.ReadLine().Split(',');
                    for (int j = 0; j < colsLen; j++)
                    {
                        result[i, j] = Convert.ToDouble(row[j]);
                    }
                }
                Console.WriteLine("数组录入完成:");
                for (int i = 0; i < rowsLen; i++)
                {
                    for (int j = 0; j < colsLen; j++)
                    {
                        Console.Write("\t{0}", result[i, j]);
                    }
                    Console.WriteLine();
                }
                return result;
            }
            catch (Exception ex)
            {
                Console.WriteLine("数据录入异常!");
                return null;
            }

        }
        private static double GetResult(int row, int col, int len, double[,] arr1, double[,] arr2)
        {
            double result = 0;
            for (int temp = 0; temp < len; temp++)
            {
                result += arr1[row, temp] * arr2[temp, col];
            }
            return result;
        }
复制代码

 

posted @   Everglow  阅读(200)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示