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

Задача «Телефонная книга» не проходит все тесты

20.08.2017, 11:32. Показов 2858. Ответов 20
Метки нет (Все метки)

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

Условие задачи:
Кликните здесь для просмотра всего текста
Телефонная книга

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

Вам дана телефонная книга в виде последовательности пар строк. Первая строка — имя абонента, вторая — его номер. Телефон может быть в одном из форматов:

+7xxxxxxxxxx (ровно 11 цифр, «x» — любая цифра);
8xxxxxxxxxx (ровно 11 цифр, «x» — любая цифра);
xxxxxxx (ровно 7 цифр, «x» — любая цифра).
Кроме цифр в произвольные позиции телефонных номеров могут быть вставлены дефисы и скобки. Например, телефон «+7(917)100-00-00» считается корректным. Требуется упорядочить телефонную книгу, используя следующие правила:

объедините контакты с одинаковыми именами (регистр букв имеет значение);
приведите все телефоны к одной записи вида «+7xxxxxxxxxx» (ровно 11 цифр, без дополнительных символов), при этом если телефон соответствует третьему формату, то добавьте в начало префикс «+7495»;
удалите дубликаты в списке телефонов каждого абонента;
при обработке пропустите записи из книги, в которых телефон не подходит ни под один из указанных форматов.

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

Входные данные состоят из набора пар строк, где первая строка означает имя, а вторая — номер телефона. Имя — это непустая последовательность заглавных и строчных латинских букв и пробелов. Имя не может начинаться или заканчиваться пробелом. Телефон — это непустая последовательность из цифр, скобок и знаков «+» и «-». Входные данные состоят не более чем из 1000 строк.

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

Выведите телефонную книгу в виде последовательность пар строк, в первой строке выведите имя абонента, во второй — список телефонов в лексикографическом порядке, относящихся к этому абоненту. Для каждого из абонентов его список телефонов не должен содержать дубликатов. Описания абонентов выводите в лексикографическом порядке их имен. Если для абонента в записной книжке не указано ни одного корректного номера, то выводить его не следует.


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

Vincent van Gogh
+79170123456
Archimedes
8(911)321-85-85
Vincent van Gogh
321-85-85
Vincent van Gogh
18238585
George Washington
+7-(919)-01-23-4-5-6
Peter
8

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

Archimedes
+79113218585
George Washington
+79190123456
Vincent van Gogh
+74953218585 +79170123456



Код программы, реализованной мной на 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp119
{
    class Program
    {
        static int Comparer(string s1, string s2)
        {
            if (char.IsUpper(s1[0]) && char.IsLower(s2[0])) return -1;
            if (char.IsUpper(s2[0]) && char.IsLower(s1[0])) return 1;
            return string.Compare(s1, s2, false);
        }
        static void Main(string[] args)
        {
            List<string> lines = new List<string>();
            List<string> row = new List<string>();
            List<string> strok = new List<string>();
            List<string> lstsort = new List<string>();
            List<List<string>> mass = new List<List<string>>();
            string current = "";
            string temp = "";
            int k = 0;
            string str1 = "";
            string str2 = "";
            string str3 = "";
            while ((current = Console.ReadLine()) != null)
            {
                if (k % 2 == 0)
                {
                    temp = current;
                }
                if ((k % 2 != 0) && (current.Length > 5))
                {
                    current = current.Replace("(", "");
                    current = current.Replace(")", "");
                    current = current.Replace("-", "");
                    if ((current.Substring(0, 2) == "+7") && (current.Length == 12))
                    {
                        temp = temp + "|" + current;
                        lines.Add(temp);
                    }
                    if ((current.Substring(0, 1) == "8") && (current.Length == 11))
                    {
                        current = current.Remove(0, 1);
                        current = current.Insert(0, "+7");
                        temp = temp + "|" + current;
                        lines.Add(temp);
                    }
                    if (current.Length == 7)
                    {
                        temp = temp + "|" + "+7495" + current;
                        lines.Add(temp);
                    }
                }
                k++;
            }
            lines.Sort(Comparer);
            row = lines[0].Split('|').ToList<string>();
            str1 = row[0];
            str2 = row[1];
            str3 = str1 + "|" + str2;
            lstsort.Add(row[0]);
            for (int i = 1; i < lines.Count; i++)
            {
                row = lines[i].Split('|').ToList<string>();
                lstsort.Add(row[0]);
                if (row[0] != str1)
                {
                    strok.Add(str3);
                    str3 = row[0] + "|" + row[1];
                }
                if ((row[0] == str1) && (row[1] != str2))
                {
                    str3 = str3 + " " + row[1];
                }
                str1 = row[0];
                str2 = row[1];
            }
            strok.Add(str3);
            lstsort.Sort();
            for (int i = 1; i < lstsort.Count; i++)
            {
                if (lstsort[i] == lstsort[i - 1])
                {
                    lstsort.Remove(lstsort[i - 1]);
                    i = i - 1;
                }
            }
            for (int i = 0; i < lstsort.Count; i++)
            {
                for (int j = 0; j < strok.Count; j++)
                {
                    row = strok[j].Split('|').ToList<string>();
                    if (row[0] == lstsort[i])
                    {
                        Console.WriteLine(row[0]);
                        Console.WriteLine(row[1]);
                    }
                }
            }
            Console.ReadLine();
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.08.2017, 11:32
Ответы с готовыми решениями:

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

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

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

20
-22 / 2 / 0
Регистрация: 16.09.2015
Сообщений: 86
26.09.2017, 10:29  [ТС]
Студворк — интернет-сервис помощи студентам
kolorotur, спасибо огромное, программа прошла все тесты, нужна была такая сортировка StringComparer.Ordinal, смог проверить только спустя такое огромное количество времени, задача эта не выпадала еще
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.09.2017, 10:29

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

Задача «Форматирование кода» не проходит все тесты, теперь на 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...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru