Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задание при приеме на работу, только не подумайте что это просто :) 
:(
    Опции темы
codelord
Дата 17.1.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 1
Всего: 39



Цитата

Тестовое задание

Существует текстовый файл следующего формата:
1.    Каждая строка может содержать идентификатор сущности-родителя и идентификаторы сущностей-детей, разделенные пробельными символами.
2.    Сами идентификаторы, как родителей, так и детей могут содержать любые символы, за исключением пробельных.
3.    Первым идентификатором в строке всегда является идентификатор сущности-родителя.
4.    Остальные идентификаторы, являются идентификаторами сущностей-детей.
5.    Минимальное содержимое строки идентификатор сущности-родителя и идентификатор сущности-ребенка.
6.    Каждая строка заканчивается знаком перевода строки (\n).
7.    Пустые строки игнорируются.
8.    Строки начинающиеся со знака ';' считаются комментариями и игнорируются.

Необходимо написать программу, которая разбирает файл указанного формата (имя файла указывается в командной строке) и выводит информацию о зависимостях на экран. При наличии циклических зависимостей программа должна уведомлять об этом. При ошибках в исходных данных, программа должна уведомлять об этом с указанием номера строки. При дублировании описании зависимостей программа должна выдавать предупреждения об этом с указанием номера строки, в которой найдена дублирующая зависимость.

Пример исходного файла:
item0 item1 item2
item2 item22
item1 item11 item12 item13

Пример вывода после разбора:
item0
    item1
  item11
  item12
  item13
    item2
  item22

Пример исходного файла с циклической зависимостью:
item0 item1
item1 item0

Требования к написанию программы:
1.    Язык программирования С++.
2.    Разрешается использование только стандартных библиотек, а также STL и Boost.

Критерии оценки программы (все критерии равнозначны):
1.    Правильность работы.
2.    Надежность работы.
3.    Понятность кода.
4.    Возможность повторного использования.
5.    Безопасность кода




--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Romikgy
Дата 17.1.2007, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



и?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Daevaorn
Дата 17.1.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(codelord @  18.1.2007,  00:28 Найти цитируемый пост)
2.    Разрешается использование только стандартных библиотек, а также STL и Boost.

жесть. уже можно не делать. фирма явно страннаяsmile
PM MAIL WWW   Вверх
S.A.G.
Дата 17.1.2007, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Наверное у них задача есть похожая


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
nickless
Дата 17.1.2007, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 19
Всего: 181



Цитата(Daevaorn @ 17.1.2007,  22:38)
жесть. уже можно не делать. фирма явно страннаяsmile

Наверно просто надо чтобы человек _сам_ парсер написал, а не использовал что-то вроде lex+bison  smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Daevaorn
Дата 17.1.2007, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(nickless @  18.1.2007,  00:43 Найти цитируемый пост)
Наверно просто надо чтобы человек _сам_ парсер написал, а не использовал что-то вроде lex+bison  

ну даsmile
во-первых STL уже часть стандартной библиотеки
во-вторых boost::spirit это покруче чем "lex+bison":)
PM MAIL WWW   Вверх
Void
Дата 17.1.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(main @  18.1.2007,  01:41 Найти цитируемый пост)
Наверное у них задача есть похожая 

Эта задача уже лет -цать как решается make.
Цитата(nickless @  18.1.2007,  01:43 Найти цитируемый пост)
Наверно просто надо чтобы человек _сам_ парсер написал, а не использовал что-то вроде lex+bison

Указан Буст, в Бусте есть Spirit, для данной задачи не хуже упомянутых тулз.

Так что максимальное внимание последним шести строкам smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Alexey_2007
Дата 17.1.2007, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 30.12.2006

Репутация: 1
Всего: 1



Вся сложность в предобработке файла, все остальное сделать в принципе легко...
предлагаю такую предобработку:

1) Для каждого имени запоминаем в каких строках оно есть, и в качестве кого (родителя\ребенка)

итого у нас формируется массив структур - по структуре на имя

2) Если одно имя - является сыном нескольких отцов - выводим ошибку

Пункты 3) - 4) выполняем пока не конец файла

3) Если нет имен, не упоминающихся в качестве детей в еще не выделенных строчках (изначально они все не выделены) - выводим ошибку

4) Все такие (не упоминающиеся)  имена добавляем в качестве детей к своим родителям (родители ищутся среди выделенных строк, если не находятся - это имя без родителей) и выделяем эти строки.

5) Выводим дерево на экран.... GAME OVER


P.S: Классный тест... еще такие попадутся - пиши обязательно!!!!

P.P.S: Народ, видимо вам предлагали решить задачу а не обсуждать фирму smile   smile   smile  

Этот тест очень хорошо проверяет наличие работающего мозга.... а библиотеки в общем то не помогут здесь ИМХО.

Это сообщение отредактировал(а) Alexey_2007 - 18.1.2007, 00:13
--------------------
Святая простота
PM MAIL   Вверх
nickless
Дата 18.1.2007, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 19
Всего: 181



Цитата(Daevaorn @ 17.1.2007,  22:53)
во-вторых boost::spirit это покруче чем "lex+bison":)

Интересно, надо будет почитать  smile 

ЗЫ
Цитата(Alexey_2007 @ 17.1.2007, 22:56)
2) Если одно имя - является сыном нескольких отцов - выводим ошибку

Это имхо не ошибка, просто тогда выйдет не дерево зависимостей, а граф:
Код

    Item1
  /      \
Item2  Item3
  \       /
    Item4


Это сообщение отредактировал(а) nickless - 18.1.2007, 00:28


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
codelord
Дата 18.1.2007, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 1
Всего: 39



Цитата

P.P.S: Народ, видимо вам предлагали решить задачу а не обсуждать фирму

smile точно, 
мне кажется она довольна сложна именно логикой (выстроить взаимоотношения родственников) а не тем чтобы пропарсить текст.


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
KpoHyc
Дата 18.1.2007, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 23.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 5



codelord, а сроки? У меня висит аналогичное задание, только за клаву я сяду не раньше сдачи сессии) 19го - 21 го намереваюсь кончить...если еще надо будет - скину)

Это сообщение отредактировал(а) KpoHyc - 18.1.2007, 00:50
--------------------
AScript + Pascal + C -> C++ ->C#Adobe Photoshop 7.0/CS 2.0 + GIMP+ Visual Studio .NET(sp1)/2005 pro(sp1)
PM MAIL ICQ Skype GTalk Jabber   Вверх
codelord
Дата 18.1.2007, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 1
Всего: 39



Цитата

codelord, а сроки? У меня висит аналогичное задание, только за клаву я сяду не раньше сдачи сессии) 19го - 21 го намереваюсь кончить...если еще надо будет - скину)

smile 
да мне не надо, лучше здесь, любопытно будет посмотреть.

Это сообщение отредактировал(а) codelord - 18.1.2007, 00:55


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Alexey_2007
Дата 18.1.2007, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 30.12.2006

Репутация: 1
Всего: 1



codelord, Я вроде написал логику на форуме.... если что не понятно - спрашивай...

nickless, просто я так понял, что возможно только дерево.. ну если возможен граф - убрать это условие и всё


Это сообщение отредактировал(а) Alexey_2007 - 18.1.2007, 00:58
--------------------
Святая простота
PM MAIL   Вверх
codelord
Дата 18.1.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 1
Всего: 39



Цитата

codelord, Я вроде написал логику на форуме.... если что не понятно - спрашивай...

вы шутите штоль smile вы лучше для себя ее решите. для меня не надо. 
проблемы начнуться когда начнешь свою логику применять.

задача трудная поэтому.
За рабочий код ставлю три знака поощрения smile
за усердие, ум и желание smile

Это сообщение отредактировал(а) codelord - 18.1.2007, 01:06


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Alexey_2007
Дата 18.1.2007, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 30.12.2006

Репутация: 1
Всего: 1



Ок просто не понял тогдаsmile
--------------------
Святая простота
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1179 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.