Необходимо написать код сложения строки и столбца матрицы - 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];
}
}
}