Вывести подматрицу - C#
Формулировка задачи:
Описать класс, обеспечивающий представление матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы, доступа по индексам к элементу матрицы.
вот я сделал чтто смог, но я не умею в классах работать и не могу сделать, чобы при добавлении строки к матрице исходная матрица тоже увеличивалась...
вывод на экран подматрицы вообще не представляю как делать
Спасибо заранее
static void Main(string[] args)
{
Console.WriteLine("Введите размер матрицы:");
Console.WriteLine("строк: "); int n = int.Parse(Console.ReadLine());
Console.WriteLine("столбцов: "); int m = int.Parse(Console.ReadLine());
int[,] A = new int[n, m];
Random rnd = new Random();
int nnew = 0, mnew = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
A[i, j] = rnd.Next(0, 9);
}
} //распечатали массив
Console.WriteLine("Массив: ");
for (int i = 0; i < n + nnew; i++)
{
for (int j = 0; j < m + mnew; j++)
{
Console.Write("{0} ", A[i, j]);
}
Console.WriteLine();
} //распечатали массив
do
{
Console.WriteLine("Выберите действие нд матрицей: \n1 - добавить столбцы \n2 - добавить строки \n3 - поиск значения по индексу \n4 - выход з программы");
int swt = int.Parse(Console.ReadLine());
switch (swt)
{
case 1:
Console.WriteLine("На сколько столбцов увеличить матрицу?");
mnew = int.Parse(Console.ReadLine());
int[,] B = new int[n, m + mnew];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
B[i, j] = A[i, j];
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m + mnew; j++)
{
B[i, j] = rnd.Next(0, 9);
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
B[i, j] = A[i, j];
}
}
Console.WriteLine("Массив: ");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m + mnew; j++)
{
Console.Write("{0} ", B[i, j]);
}
Console.WriteLine();
} Console.ReadKey();
break;
case 2:
Console.WriteLine("На сколько строк увеличить матрицу?");
nnew = int.Parse(Console.ReadLine());
int[,] C = new int[n + nnew, m];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
C[i, j] = A[i, j];
}
}
for (int i = 0; i < n + nnew; i++)
{
for (int j = 0; j < m; j++)
{
C[i, j] = rnd.Next(0, 9);
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
C[i, j] = A[i, j];
}
}
Console.WriteLine("Массив: ");
for (int i = 0; i < n + nnew; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write("{0} ", C[i, j]);
}
Console.WriteLine();
} Console.ReadKey();
break;
case 3:
{
Console.WriteLine("Введите значения индексов через пробел(строка столбец): ");
string[] split = Console.ReadLine().Split(' ');
int nindex = int.Parse(split[0]);
int mindex = int.Parse(split[1]);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if ((i == nindex) && (j == mindex))
{
Console.WriteLine(A[i - 1, j - 1]);
}
}
}
} Console.ReadKey();
break;
case 4:
Console.WriteLine("Выход из программы: \nДля выхода нажмите Esс");
break;
default:
Console.WriteLine("Неправильно!");
break;
}
ConsoleKeyInfo cki = Console.ReadKey(true);
if (cki.Key == ConsoleKey.Escape)
{
break;
}
} while (true);
}Решение задачи: «Вывести подматрицу»
textual
Листинг программы
using System;
namespace ConsoleApplication1
{
class Matrix
{
internal int row
{
get;
set;
}
internal int col
{
get;
set;
}
public void printMatrix()
{
Random rand = new Random();
for (int i = 0; i < col; ++i)
{
for (int j = 0; j < row; ++j)
{
Console.Write(rand.Next (0, 9)+" ");
}
Console.WriteLine("");
}
}
}
}