Необходимо написать код сложения строки и столбца матрицы - C#

Узнай цену своей работы

Формулировка задачи:

Элементы матрицы вводятся либо пользователем вручную с клавиатуры либо генерируются с помощью генератора случайных чисел. Выбор одного из способов предоставляется пользователю. Дан массив из n* n элементов, сложите строку i и со столбцом j. Номера i и j вводятся пользователем с клавиатуры. Результат разместите в новом одномерном массиве.

Решение задачи: «Необходимо написать код сложения строки и столбца матрицы»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
 
namespace MatrixMultiplication
{
    class Program
    {
        static void Main(string[] args)
        {
            double[] result = new double[1];
            Matrix matrix;
            int row;
            int column;
            Console.Write("Введите количество строк в матрице: ");
            row = (int)Math.Round((double)CorrectInput());
            Console.Write("Введите количество столбцов в матрице: ");
            column = (int)Math.Round((double)CorrectInput());
            matrix = new Matrix(row, column);
 
            Console.Write("Хотите ввести данные самостоятельно? (Yes/No)");
            switch (Console.ReadLine())
            {
                case "Yes":
                {
                    int totalItems = matrix.Row*matrix.Column;
                    for (int i = 0; i < matrix.Row; i++)
                    {
                        for (int j = 0; j < matrix.Column; j++)
                        {
                            Console.Write("Пустых ячеек: " + totalItems + " Введите значение ячейки: ");
                            matrix.SetItem(Convert.ToDouble(Console.ReadLine()), i, j);
                            totalItems--;
                        }
                    }
                    break;
                }
                case "No":
                {
                    Random ran = new Random();
                    for (int i = 0; i < matrix.Row; i++)
                    {
                        for (int j = 0; j < matrix.Column; j++)
                        {
                            matrix.SetItem(ran.Next(1000), i, j);
                        }
                    }
                    break;
                }
            }
            PaintMatrix(matrix);
 
            Console.Write("Какую строку хотите сложить: ");
            row = (int)Math.Round((double)CorrectInput());
            Console.Write("Какой столбец хотите сложить: ");
            column = (int)Math.Round((double)CorrectInput());
            result = Summation(matrix, row, column);
            Console.WriteLine("Сложив строку " + row + " с колонкой "+ column +" получаем: " + result[0]);
            
            Console.WriteLine("Нажмите любую клавишу чтобы выйти.");
            Console.ReadLine();
        }
 
        static double? CorrectInput()
        {
            double? input = null;
            do
            {
                try
                {
                    input = Convert.ToDouble(Console.ReadLine());
                }
                catch (Exception)
                {
                    Console.WriteLine("Введите число!");
                }
                
            }
            while (input == null);
 
            return input;
        }
 
        static double[] Summation(Matrix matrix, int row, int collumn)
        {
            double result = 0;
            for (int i = 0; i < matrix.Column; i++)
            {
                result += matrix.GetItem(row, i);
            }
            for (int i = 0; i < matrix.Row; i++)
            {
                result += matrix.GetItem(i, collumn);
            }
            return new double[] {result};
        }
 
        static void PaintMatrix(Matrix matrix )
        {
            for (int i = 0; i < matrix.Row; i++)
            {
                for (int j = 0; j < matrix.Column; j++)
                {
                    Console.Write(matrix.GetItem(i,j) + " ");
                }
                Console.WriteLine();
            }
        }
 
    }
 
    class Matrix
    {
        private double[,] mass;
        public int Row { get; set; }
        public int Column { get; set; }
 
        public Matrix(int row, int column)
        {
            this.Row = row;
            this.Column = column;
            mass = new double[row, column];
        }
 
        public void SetItem(double value, int row, int column)
        {
            if (row >= this.Row || column >= this.Column)
                return;
            mass[row, column] = value;
        }
 
        public double GetItem(int row, int column)
        {
            if (row >= this.Row || column >= this.Column)
                return default(double);
 
            return mass[row, column];
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы