Описать класс Матрица. Создать метод вычитания матриц (Перегруженный оператор “–“). В...

0 голосов
47 просмотров

Описать класс Матрица. Создать метод вычитания матриц (Перегруженный оператор “–“). В программе показать пример в C#(си шарп)


Информатика (20 баллов) | 47 просмотров
0

и что должен делать перегруженный оператор?

0

разницу матриц считать

0

и больше никакого функционала?

0

да легче екстенжен сделать тогда

0

больше никакого, только отнимание

0

ок, завтра напишу

0

буду признателен.

Дан 1 ответ
0 голосов
Правильный ответ

Using System;
using System.Collections.Generic;

public class Matrix
{
    private double[,] Data;
    public double this[int i, int j]
    {
        get { return Data[i, j]; }
        set { Data[i, j] = value; }
    }

    public Matrix(double[,] data) { this.Data = data; }

    public override string ToString()
    {
        var sb = new System.Text.StringBuilder();
        for (var i = Data.GetLowerBound(0); i <= Data.GetUpperBound(0); i++)<br>        {
            for (var j = Data.GetLowerBound(1); j <= Data.GetUpperBound(1); j++)<br>            {
                sb.AppendFormat("{0} ", Data[i, j]);
            }
            sb.AppendLine();
        }

        return sb.ToString();
    }

    public int GetUpperBound(int i) => this.Data.GetUpperBound(i);


    public static Matrix operator -(Matrix a, Matrix b)
    {
        var c = new double[1 + Math.Min(a.GetUpperBound(0), b.GetUpperBound(0)), 1 + Math.Min(a.GetUpperBound(1), b.GetUpperBound(1))];
        for (var i = 0; i <= c.GetUpperBound(0); i++)<br>        {
            for (var j = 0; j <= c.GetUpperBound(1); j++)<br>            {
                c[i, j] = a[i, j] - b[i, j];
            }
        };
        return new Matrix(c);
    }
}

class Program
{
    static void Main()
    {
        var n = 5;
        var a = new Matrix(new double[n, n]);
        var b = new Matrix(new double[n, n]);

        for (var i = 0; i < n; i++)
        {
            for (var j = 0; j < n; j++)
            {
                a[i, j] = i + j;
                b[i, j] = i;
            }
        }

        Console.WriteLine(a);
        Console.WriteLine(b);
        Console.WriteLine(a - b);
        Console.ReadKey();

    }
}


(53.1k баллов)
0

к сожалению универсальный класс не получился(((