Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
-22 / 2 / 0
Регистрация: 16.09.2015
Сообщений: 86

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

30.07.2017, 11:21. Показов 2652. Ответов 4
Метки нет (Все метки)

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

Условие задачи:
Кликните здесь для просмотра всего текста
Форматирование таблицы

ограничение по времени на тест2 секунды
ограничение по памяти на тест256 мегабайт
вводstdin
выводstdout

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

Вам необходимо отформатировать эту таблицу следующим образом:

1) убрать из всех значений ячеек начальные и концевые пробелы;
2) установить ширину каждого столбца равную наибольшей длине значения в этом столбце;
3) выравнить значения всех ячеек по центру столбца, добавив начальные и концевые пробелы;
4) если значение невозможно выравнить точно по центру ячейки, то расположите его ближе к левой границе.

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

Выходные данные
Выведите отформатированную по описанным правилам таблицу.


Пример из условия задачи(он отработал):
Кликните здесь для просмотра всего текста
входные данные

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

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

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


Код программы, реализованной мной на на C#:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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();
        }
    }
}
Прикладываю пример, который из условия(он отработал) в виде фото
Изображения
 
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.07.2017, 11:21
Ответы с готовыми решениями:

Задача «Телефонная книга» не проходит все тесты
Задача не проходит все тесты. Пример, указанный в условии работает, а потом тестировщик пробует еще несколько различных вариантов входных...

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

Задача «Форматирование кода» не проходит все тесты
Задача не проходит все тесты. Пример, указанный в условии работает, а потом тестировщик пробует еще несколько различных вариантов входных...

4
0 / 0 / 1
Регистрация: 02.12.2015
Сообщений: 1
30.07.2017, 13:09
Лучший ответ Сообщение было отмечено CBBBBB как решение

Решение

Программа некорректно работает с ячейками, которые нужно дополнить одним пробелом
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            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] + " ";
                        }
                    }
                }
            }
заменить на
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            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] + " ";
                    }
                }
            }
В строке 35 выделяются лишние ячейки массива
0
-22 / 2 / 0
Регистрация: 16.09.2015
Сообщений: 86
30.07.2017, 17:36  [ТС]
aspadm, спасибо огромное
0
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,407
30.07.2017, 17:38
CBBBBB, вам эту задачу какой-то курс подсунул?
0
-22 / 2 / 0
Регистрация: 16.09.2015
Сообщений: 86
03.08.2017, 23:32  [ТС]
Usaga, типо того
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.08.2017, 23:32
Помогаю со студенческими работами здесь

Задача «Телефонная книга» не проходит все тесты
Задача не проходит все тесты. Пример, указанный в условии работает, а потом тестировщик пробует еще несколько различных вариантов входных...

Задача «Форматирование кода» не проходит все тесты, уже на третьем заваливается
Задача «Форматирование кода» не проходит все тесты, уже на третьем заваливается. Примеры, указанные в условии работают, а потом тестировщик...

Задача «Форматирование кода» не проходит все тесты, теперь на 9-ом тесте заваливается
Задача «Форматирование кода» не проходит все тесты, теперь на 9-ом тесте заваливается. Примеры, указанные в условии работают, а потом...

Задача по преобразованию XML не проходит все тесты, дает ошибку “Неправильный ответ на тест 8”
Задача по преобразованию XML не проходит все тесты, дает ошибку &quot;Неправильный ответ на тест 8&quot;, что-то видимо не учел. ...

Не проходит все тесты
#include &lt;iostream&gt; #include &lt;cmath&gt; int main() { long long m, n; std::cin &gt;&gt; m &gt;&gt; n; m %= 12; long long x = n...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru