Существует ли функция или алгоритм C # для сортировки данных моей таблицы, отображаемых в коде консоли? - PullRequest
0 голосов
/ 11 мая 2019

Массив 2D в C # не отсортирован по столбцам.

  1. Минимальный год -> Максимальный год
  2. Минимальный месяц -> Максимальный месяц
  3. Минимальный день -> Максимальный день
string[,] A = new string[2, 7];
string[,] B = new string[7, 7];
int menu = 0;
int i = 0;
int L = 0;


Console.WriteLine("Main ============i" + i + " L " + L + " =Menu " + menu + "==================");

do
{
    Console.WriteLine("Do Loop ============= " + i + " =====================");


    //i = 0;
    for (int j = 0; j < A.GetLength(1); j++)
    {
        A[0, j] = Console.ReadLine();
        B[L, j] = A[0, j];
    }

    Console.WriteLine("Before copy===");
    PriArr(A);
    Console.WriteLine("After copy===");
    PriArr(B);

    Console.WriteLine("Do you add new one? [1.Yes 2.No] : ");
    int Menu = int.Parse(Console.ReadLine());
    switch (Menu)
    {
        case 1: menu = 0; L++; break;
        case 2: menu = 1; break;
    }
    Console.WriteLine("After Switch (menu value):" + menu);

} while (menu == 0);
SortArr(B);
Console.WriteLine("After sorted===============");
PriArr(B);

}
static void PriArr(string[,] IN)
{
for (int i = 0; i < IN.GetLength(0); i++)
{
    for (int j = 0; j < IN.GetLength(1); j++)
    {
        Console.Write("{0} ", IN[i, j]);
    }
    Console.WriteLine("||");
}
Console.WriteLine("----------");
}
static string[,] SortArr(string[,] IN)
{
int Y, Y1, M, M1, D, D1;
string c;

//Sort Year: Year min --> Year Max
for (int i = 0; i < IN.GetLength(0) - 1; i++)
{
    for (int L = i; L < IN.GetLength(0); L++)
    {
        //Year index 2 convert to int
        Y = Convert.ToInt32(IN[i, 2]);
        Y1 = Convert.ToInt32(IN[L, 2]);
        //Month index 1 convert to int
        M = Convert.ToInt32(IN[i, 1]);
        M1 = Convert.ToInt32(IN[L, 1]);
        //Day index 0 convert int
        //Month index 1 convert to int
        D = Convert.ToInt32(IN[i, 0]);
        D1 = Convert.ToInt32(IN[L, 0]);

               if (D > D1) 
               {
                   if (M > M1)
                   {
                        if (Y > Y1)
                        {
                          for (int k = 0; k < IN.GetLength(1);k++)
                            {
                               c = IN[i, k];
                               IN[i, k] = IN[L, k];
                               IN[L, k] = c;
                            }
                        }
                   }
               }
        }
  }
return IN;

Я ожидаю, что выходные данные могут отображаться по виду даты в качестве пользовательского ввода.

Более подробную информацию вы можете увидеть в Фото таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...