Добавление строки при превышении заданных символов в столбце таблицы, нарисованной в консоли - 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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д