Добавление строки при превышении заданных символов в столбце таблицы, нарисованной в консоли - C#

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

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

Нужно вывести таблицу заданного формата в консоли C# так, чтобы при вводе значений строка автоматически добавлялась в таблицу. Вопрос, как сделать так, чтобы при превышении возможной ширины столбца текст переводился на следующую строчку..
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace LAB5_1
{
    class Program
    {
        static string[] nazvanie = new string[1000];
        static string[] group = new string[1000];
        static string[] materic = new string[1000];
        static double[] number = new double[1000];

        static void Main(string[] args)
        {
            HeadTable();
            Prim();
            int n = 0;
            try
            {
                while (true)
                {
                    Console.WriteLine("Введите название");
                    nazvanie[n] = Console.ReadLine();
                    Console.WriteLine("Введите группу");
                    group[n] = Console.ReadLine();
                    Console.WriteLine("Введите название материка");
                    materic[n] = Console.ReadLine();
                    Console.WriteLine("Введите числьеность популяции");
                    number[n] = Convert.ToDouble(Console.ReadLine());
                    Table(n);
                    n++;
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("Проверте правильность ввода данных");
                Console.ReadKey();
            }
        }
        public static void HeadTable()
        {
            Console.WriteLine("_____________________________________________________________________________");
            Console.WriteLine("|" + "Деяки види антилоп                     " + "|                            " + "        |");
            Console.WriteLine("|" + "_______________________________________|____________________________________" + "|");
            Console.WriteLine("|" + "Назва              " + "|" + "Група   " + "|" + "Материк              " + "|" + "Чисельнисть популяции" + "    |");
            Console.WriteLine("|" + "___________________|________|_____________________|_________________________" + "|");
        }
        public static void Prim()
        {
            Console.WriteLine("|" + "Групи: А - справжни антилопи, B - коров'ячи антилопи, H - кинськи антилопи  " + "|");
            Console.WriteLine("|" + "____________________________________________________________________________" + "|");
        }

        public static void NewRow(int nRow)
        {
            Console.WriteLine("|                   " + "|        " + "|                     " + "|                         " + "|");
 
            string nazva = nazvanie[nRow];
 
            if (nazva.Length <= 17)
            {
 
                Console.Write("|");
                Console.Write(" {0,17} ", nazva);
                Console.Write("|");
            }
            else
            {
                
                Console.Write(" {0,17} ", "Ошибка");
                Console.Write("|");
            }

            string groupa = group[nRow].ToString();
 
            if (groupa.Length <= 6)
            {
 
                Console.Write(" {0,6} ", groupa);
                Console.Write("|");
            }
            else
            {
 
                Console.Write(" {0,6} ", "Ошибка");
                Console.Write("|");
            }

            string materic1 = materic[nRow].ToString();
 
            if (materic1.Length <= 19)
            {
 
                Console.Write(" {0,19} ", materic1);
                Console.Write("|");
            }
            else
            {
                Console.Write("|");
                Console.Write(" {0,19} ", "Ошибка");
                Console.Write("|");
            }

            string nomer = number[nRow].ToString();
 
            if (nomer.Length <= 23)
            {
 
                Console.Write(" {0,23} ", nomer);
                Console.Write("|");
            }
            else
            {
                Console.Write("|");
                Console.Write(" {0,23} ", "Ошибка");
                Console.Write("|");
            }
            Console.WriteLine();
            Console.WriteLine("|___________________|________|_____________________|_________________________|");
        }

        public static void Table(int nOfRows)
        {
            Console.Clear();
            HeadTable();
            for (int i = 0; i <= nOfRows; i++)
                NewRow(i);
            Prim();
        }

    }
 
}

Решение задачи: «Добавление строки при превышении заданных символов в столбце таблицы, нарисованной в консоли»

textual
Листинг программы
class TableLine
{
    int[] sizes;
    int width;
 
    public TableLine(params int[] Sizes)
    {
        sizes = new int[Sizes.Length];
        width = (Sizes.Length + 1) * 3 - 2;
        for(int i = 0; i < Sizes.Length; i++)
        {
            sizes[i] = Sizes[i];
            width += Sizes[i];
        }
    }
 
    public void WriteHLine()
    {
        Console.WriteLine(new String('-', width));
    }
 
    public void WriteLine(params object[] Cells)
    {
        bool fOverflow = false;
        string[] NextCells = new String[Cells.Length];
        StringBuilder sb = new StringBuilder("| ");
        for (int i = 0; i < sizes.Length; i++)
        {
            string s = i < Cells.Length && Cells[i] != null ? Cells[i].ToString() : String.Empty;
            s = s.PadRight(sizes[i]);   // Дополняем короткие строки пробелами
            sb.Append(s, 0, sizes[i]);  // Печатаем то, что помещается
            sb.Append(" | ");
            if (fOverflow |= s.Length > sizes[i])
                NextCells[i] = s.Substring(sizes[i]); // Остальное переносим
        }
 
        Console.WriteLine(sb);
        if (fOverflow) WriteLine(NextCells);
        else WriteHLine();
    }
}

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


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

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

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