逐至 2021-04-25 11:19 采纳率: 100%
浏览 138
已结题

c#编程题,矩阵表达式,进链接看文本,会的留下代码,注释

链接: https://pan.baidu.com/s/1OrLm5PLoFK8oH-foAySgAQ

提取码: u3wq 

  • 写回答

4条回答 默认 最新

  • Go 旅城通票 2021-04-25 20:20
    关注

    线性代数。。重学了一遍,o(╥﹏╥)o。。。

    using System;
    using System.Linq;
    using System.Collections.Generic;
    namespace ConsoleApp1
    {
        class Matrix
        {
            int size;
            int[,] a;
    
            public Matrix(int n)
            {
                size = n;
                a = new int[n, n];
            }
    
            public void read()
            {
                for (int i = 0; i < size; ++i)
                {
                    string[] words = Console.ReadLine().Trim().Split(null);
                    if (words.Length != size)
                    {
                        Console.WriteLine("bad input");
                        throw new Exception("bad input");
                    }
                    for (int j = 0; j < size; ++j)
                        a[i, j] = int.Parse(words[j]);
                }
            }
    
            public static Matrix operator +(Matrix a, Matrix b)
            {
                var size = a.size;
                var m = new Matrix(size);
                for (var i = 0; i < size; i++)
                    for (var j = 0; j < size; j++)
                        m.a[i, j] = a.a[i, j] + b.a[i, j];
                return m;
            }
            public static Matrix operator -(Matrix a, Matrix b)
            {
                var size = a.size;
                var m = new Matrix(size);
                for (var i = 0; i < size; i++)
                    for (var j = 0; j < size; j++)
                        m.a[i, j] = a.a[i, j] - b.a[i, j];
                return m;
            }
            public static Matrix operator *(Matrix a, Matrix b)
            {
                var size = a.size;
                var m = new Matrix(size);
                for (var i = 0; i < size; i++)
                {
                    for (var j = 0; j < size; j++)
                    {
                        var sum = 0;
                        for (var k = 0; k < size; k++)
                        {
                            sum += a.a[i, k] * b.a[k,j];
                        }
    
                        m.a[i, j] = sum;
                    }
                }
                return m;
            }
            public void print()
            {
                var last = size - 1;
                for (var i = 0; i < size; i++)
                {
                    for (var j = 0; j < size; j++)
                    {
                        Console.Write(a[i, j]);
                        if (j != last) Console.Write(" ");
                    }
                    if (i != last) Console.Write("\n");
                }
            }
        }
    
        class Program
        {
            public static void Main()
            {
                var arr = Console.ReadLine().Split(' ').Select(i => int.Parse(i)).ToArray();
                var Matrixs = new Matrix[arr[1]];
                for (var i = 0; i < arr[1]; i++)
                {
                    Matrixs[i] = new Matrix(arr[0]);
                    Matrixs[i].read();
                    Console.ReadLine();
                }
            
    
                var exps = Console.ReadLine().Trim().Split(' ');
                Stack<Matrix> q = new Stack<Matrix>();
                Matrix a, b;
                foreach (var exp in exps)
                {
                    switch (exp)
                    {
                        case "+": q.Push(q.Pop() + q.Pop()); break;
                        case "-": a = q.Pop(); b = q.Pop(); q.Push(b - a); break;
                        case "*": a = q.Pop(); b = q.Pop(); q.Push(b*a); break;
                        default: q.Push(Matrixs[int.Parse(exp) - 1]); break;
                    }
                }
                q.Pop().print();
            }
        }
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan