Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2012, 14:59   #1
Руслан666
Новичок
Джуниор
 
Регистрация: 02.12.2012
Сообщений: 6
По умолчанию вторая олимпиадная задача-проверить наличие номера в телефонной книге

Телефонные номера в адресной книге мобильного телефона имеют один из следующих форматов:
+7С<номер>
8<код><номер>
<номер>
где <номер> - это семь цифр, а <код> - это три цифры или три цифры в круглых скобках. Если код не указан, то считается, что он равен 495. Кроме того, в записи телефонного номера может стоять знак "-" между любыми двумя цифрами(см.пример).
На данный момент в адресной книге телефона Васи записано всего три телефонных номера, и он хочет записаь туда еще один. Но он не может понять, не записан ли уже такой номер в телефонной книге. Помогите ему!
Два телефонных номера совпадают, если у них равны коды и равны номера. Например, +7(916)0123456 и 89160123456 - это один и тот же номер.
Формат входных данных
В первой строке входных данных записан номер телефона, который Вася хочет добавить в адресную книгу своего телефона. В следующих трех строках записаны номера телефонов, которые уже находятся в адресной книге телефона Васи. гарантируется, что каждая из записей соотвествует одному из трех привиденных в условии форматов.
Формат выходных данных!
Дл\ каждого телефонного номера в адресной строке книги выведите YES, если он совпадает с тем телефонным номером, который Вася хочет добавить в адресную строку или NO в противном случае.
Руслан666 вне форума Ответить с цитированием
Старый 02.12.2012, 16:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

данная задачка чрезвычайно проста и, по сути ничего, кроме обработки строк не требует.
Читайте очередной номер, удаляйте все "-" и скобки из строки, если после этого длина номера короче 8 цифр, то в начале дописывайте строчку "495", если нет, то, если в начале строки +7 удалить два символа из начала строки, иначе, если в начале строки 8 - удалить один символ.
Всё. Вы получили номер в формате 10 цифр.
Эту операцию вынесите в фунцию (для удобства), выполняйте её для искомого номера и для каждой из трёх строк. сравнивайте полученные строки в цикле. выводите результат сравнения.
Всё. профит.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на обработку строки: найти самое короткое слово и проверить в нём наличие заданного сочетания букв Черныш Иван Помощь студентам 5 05.06.2011 17:12
Проверить на наличие изображения Nikolay-1989 БД в Delphi 1 15.03.2011 08:21
Проверить наличие устройства Hulkus Помощь студентам 0 27.02.2011 23:50
Проверить наличие запроса? alco84 Microsoft Office Access 2 25.03.2010 22:56
изменение номера страницы в Колонтитулах по всей книге Exel DimonJar Microsoft Office Excel 0 09.02.2010 20:12