Вопрос задан 04.07.2023 в 20:22. Предмет Информатика. Спрашивает Юрьев Георгий.

(Написать код на C#) Разработать процедуру и/или функцию, реализующую операцию матричного умножения.

0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Колтунова Валерия.

Код:

  • using System;
  • using System.Linq;
  • namespace Mtrx
  • {
  •    static class Program
  •    {
  •        static void Main(string[] args)
  •        {
  •            var matrix1 = new double[][]
  •            {
  •                new [] {1.0, 2},
  •                new [] {3.0, 4}
  •            };
  •            
  •            var matrix2 = new double[][]
  •            {
  •                new [] {1.0, 2},
  •                new [] {3.0, 4}
  •            };
  •            
  •            var A = MMult(matrix1, matrix2);
  •            if (!A.Success)
  •            {
  •                Console.WriteLine(A.Error);
  •                return;
  •            }
  •            Print2DMatrix(A.Data);
  •        }
  •        private static Result<double[][]> MMult(double[][] A, double[][] B) {
  •            if (A[0].Length != B.Length)
  •                return Result<double[][]>.GetError("It's imposable to multiply this matrix because of their dimensions");
  •            
  •            var result = A.Select(
  •                (row, rowIndex) =>
  •                    B[0].Select((_, columnIndex) => B.Select(__ => __[columnIndex])
  •                        .Zip(row, (rowCell, columnCell) => rowCell * columnCell).Sum()
  •                    ).ToArray()
  •            ).ToArray();
  •            return Result<double[][]>.GetResult(result);
  •        }
  •        private static void Print2DMatrix<T>(T[][] matrix)
  •        {
  •            for (var i = 0; i < matrix.Length; ++i)
  •            {
  •                for (var j = 0; j < matrix[i].Length; ++j)
  •                {
  •                    Console.Write(matrix[j][i]);
  •                    Console.Write(" ");
  •                }
  •                Console.WriteLine();
  •            }
  •        }
  •    }
  •    internal class Result<T>
  •    {
  •        public T Data { get; }
  •        public string Error { get; }
  •        public bool Success => Error is null;
  •        public static Result<T> GetError(string error)
  •        {
  •            return new Result<T>(default, error);
  •        }
  •        public static Result<T> GetResult(T result)
  •        {
  •            return new Result<T>(result);
  •        }
  •        private Result(T data, string error = null)
  •        {
  •            Data = data;
  •            Error = error;
  •        }
  •    }
  • }
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно! Вот пример кода на C#, реализующий операцию матричного умножения:

csharp
using System; class MatrixMultiplication { static void Main(string[] args) { int[,] matrixA = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int[,] matrixB = { { 9, 8, 7 }, { 6, 5, 4 }, { 3, 2, 1 } }; int[,] resultMatrix = MultiplyMatrices(matrixA, matrixB); Console.WriteLine("Matrix A:"); PrintMatrix(matrixA); Console.WriteLine("Matrix B:"); PrintMatrix(matrixB); Console.WriteLine("Result Matrix:"); PrintMatrix(resultMatrix); } static int[,] MultiplyMatrices(int[,] matrixA, int[,] matrixB) { int rowsA = matrixA.GetLength(0); int colsA = matrixA.GetLength(1); int rowsB = matrixB.GetLength(0); int colsB = matrixB.GetLength(1); if (colsA != rowsB) { throw new ArgumentException("Number of columns in Matrix A must be equal to number of rows in Matrix B."); } int[,] result = new int[rowsA, colsB]; for (int i = 0; i < rowsA; i++) { for (int j = 0; j < colsB; j++) { int sum = 0; for (int k = 0; k < colsA; k++) { sum += matrixA[i, k] * matrixB[k, j]; } result[i, j] = sum; } } return result; } static void PrintMatrix(int[,] matrix) { int rows = matrix.GetLength(0); int cols = matrix.GetLength(1); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { Console.Write(matrix[i, j] + "\t"); } Console.WriteLine(); } Console.WriteLine(); } }

Пример выше демонстрирует операцию матричного умножения для двух матриц matrixA и matrixB, а также выводит результат умножения в виде resultMatrix. Пожалуйста, учтите, что это всего лишь пример, и вы можете настроить размеры и значения матриц по своему усмотрению.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос