В побочную диагональ матрицы вывести элементы каждого столбца с минимальными кодами - C#
Формулировка задачи:
Горю на лабе. Вот условие. Помогите кто чем может. Для кого-то несколько минут, а для меня завал(
Дана символьная матpица А(5,5). В побочную диагонали вывести элементы каждого столбца с минимальными кодами. Тpанспониpовать полученную матpицу и повтоpить указанные действия еще pаз. Из алфавитных символов составить 2 стpоки и выполнить их сpавнение.
В исходной матрице заменить все символы на их коды по таблице ASCII и в дальнейшем рассматривать матрицу как числовую.
Решение задачи: «В побочную диагональ матрицы вывести элементы каждого столбца с минимальными кодами»
textual
Листинг программы
using System;
using System.Collections.Generic;
namespace ConsoleApplication3
{
enum Mode:byte
{
Codes,
Numbers
}
sealed class MyArray
{
private readonly char[,] _arr;
private int[,] _tmpArr;
public MyArray(int x)
{
_arr=new char[x,x];
_tmpArr=new int[x,x];
FillArray();
PrintArray(_arr,"Начальный массив:",Mode.Codes);
PrintArray(_tmpArr,"Числовые значения:",Mode.Numbers);
TakeminElements();
PrintArray(_tmpArr, "Перестановка минимальных элементов:", Mode.Numbers);
Transp();
PrintArray(_tmpArr, "Транспонирование:", Mode.Numbers);
PrintArray(_tmpArr, "Транспонирование:", Mode.Codes);
}
private void FillArray()
{
int tmp;
var rnd = new Random();
for (int i = 0; i < _arr.GetLength(0); i++)
{
for (int y = 0; y < _arr.GetLength(1); y++)
{
tmp = rnd.Next(100, 200);
_arr[i, y] = Convert.ToChar(tmp);
_tmpArr[i, y] = tmp;
}
}
}
private void TakeminElements()
{
var minElem=new int[_arr.GetLength(1)];
int tmp=int.MaxValue;
for (int i = 0; i < _tmpArr.GetLength(0); i++)
{
for (int y = _tmpArr.GetLength(1)-1; y >=0; y--)
{
if (_tmpArr[y, i] < tmp)
{
tmp = _tmpArr[y, i];
minElem[i] = tmp;
}
}
tmp = int.MaxValue;
}
for (int i=_tmpArr.GetLength(0),y=0;i>0;i--,y++)
{
_tmpArr[i - 1, y] =minElem[y];
}
}
private void PrintArray(char[,]myArr,string text,Mode mode)
{
SetConsoleColor();
Console.WriteLine(text);
ClearConsoleColor();
for (int i = 0; i < myArr.GetLength(0); i++)
{
for (int y = 0; y < myArr.GetLength(1); y++)
{
if (mode == Mode.Codes)
{
Console.Write((char)myArr[i, y] + " ");
}
else
{
Console.Write(myArr[i, y] + " ");
}
}
Console.WriteLine("\n");
}
Console.WriteLine();
}
private void PrintArray(int[,] myArr, string text, Mode mode)
{
SetConsoleColor();
Console.WriteLine(text);
ClearConsoleColor();
for (int i = 0; i < myArr.GetLength(0); i++)
{
for (int y = 0; y < myArr.GetLength(1); y++)
{
if (mode == Mode.Codes)
{
Console.Write((char)myArr[i, y] + " ");
}
else
{
Console.Write(myArr[i, y] + " ");
}
}
Console.WriteLine("\n");
}
Console.WriteLine();
}
private void SetConsoleColor()
{
Console.ForegroundColor = ConsoleColor.DarkCyan;
}
private void ClearConsoleColor()
{
Console.ForegroundColor = ConsoleColor.Gray;
}
private void Transp()
{
int tmp;
for (int i = 0; i < _tmpArr.GetLength(0); i++)
{
for (int j = 0; j <i; j++)
{
tmp = _tmpArr[i,j];
_tmpArr[i,j] = _tmpArr[j,i];
_tmpArr[j,i] = tmp;
}
}
}
}
static class Program
{
static void Main(string[] args)
{
var a = new MyArray(5);
}
}
}