Задача форматирования таблицы не проходит все тесты - C#

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

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

Задача не проходит все тесты. Пример, указанный в условии работает, а потом тестировщик пробует еще несколько различных вариантов входных данных. Какой вариант не сработал, он не показывает. Помогите пожалуйста разобраться, какие условия в моем коде не соблюдены. Условие задачи:

Форматирование таблицы

ограничение по времени на тест2 секунды ограничение по памяти на тест256 мегабайт вводstdin выводstdout Вам дана таблица, заданная набором строк. Разделителями ячеек в каждой строке являются символы «|». Содержимое каждой ячейки — это последовательность пробелов, цифр и заглавных и строчных латинских букв. Вам необходимо отформатировать эту таблицу следующим образом: 1) убрать из всех значений ячеек начальные и концевые пробелы; 2) установить ширину каждого столбца равную наибольшей длине значения в этом столбце; 3) выравнить значения всех ячеек по центру столбца, добавив начальные и концевые пробелы; 4) если значение невозможно выравнить точно по центру ячейки, то расположите его ближе к левой границе.

Входные данные

Входные данные состоят из некоторого количество строк, состоящих из пробелов, цифр, заглавных и строчных латинских букв и символов «|». Значение ячейки может быть пустым. Гарантируется, что все строки таблицы состоят из одинакового числа ячеек. Первый и последний символ каждой строки входных данных — это символы «|». Размер входных данных не превосходит 10 Кб.

Выходные данные

Выведите отформатированную по описанным правилам таблицу.
Пример из условия задачи(он отработал):

входные данные

|test|me|one two| | a | three spaces | |

выходные данные

|test| me |one two| | a |three spaces| |
Код программы, реализованной мной на на C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp90
{
    class Program
    {
        static void Main(string[] args)
        {
            string current = "";
            List<List<string>> mass = new List<List<string>>();
            List<string> row = new List<string>();
            List<string> nrow = new List<string>();
            int i = 0;
            while ((current = Console.ReadLine()) != null)
            {
                row = current.Split('|').ToList<string>();
                mass.Add(new List<string>());
                for (int k = 1; k < row.Count - 1; k++)
                {
                    row[k] = row[k].TrimStart(' ');
                    row[k] = row[k].TrimEnd(' ');
                    mass[i].Add(row[k]);
                }
                i++;
            }
            List<int> num = new List<int>();
            for (int e = 0; e < mass.Count; e++)
            {
                for (int f = 0; f < mass[e].Count; f++)
                {
                    num.Add(0);
                    if (num[f] < mass[e][f].Length)
                    {
                        num[f] = mass[e][f].Length;
                    }
                }
            }
            for (int e = 0; e < mass.Count; e++)
            {
                for (int f = 0; f < mass[e].Count; f++)
                {
                    while (mass[e][f].Length < num[f] - 1)
                    {
                        mass[e][f] = " " + mass[e][f] + " ";
                        if (mass[e][f].Length == num[f] - 1)
                        {
                            mass[e][f] = mass[e][f] + " ";
                        }
                    }
                }
            }
            for (int e = 0; e < mass.Count; e++)
            {
                for (int f = 0; f < mass[e].Count; f++)
                {
                    Console.Write("|" + mass[e][f]);
                }
                Console.WriteLine("|");
            }
            Console.ReadLine();
        }
    }
}
Прикладываю пример, который из условия(он отработал) в виде фото

Решение задачи: «Задача форматирования таблицы не проходит все тесты»

textual
Листинг программы
            for (int e = 0; e < mass.Count; e++)
            {
                for (int f = 0; f < mass[e].Count; f++)
                {
                    while (mass[e][f].Length < num[f] - 1)
                    {
                        mass[e][f] = " " + mass[e][f] + " ";
                        if (mass[e][f].Length == num[f] - 1)
                        {
                            mass[e][f] = mass[e][f] + " ";
                        }
                    }
                }
            }

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


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

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

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