Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.97
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
#1

Небольшое тестовое задание в финской компании. - C++

15.09.2011, 17:51. Просмотров 4621. Ответов 64
Метки нет (Все метки)

Привествую всех жителей форума.
Сразу отмечу, что решения просить не хочу, а просто хочу показать задание, которая давала компания суунто (Suunto, Finland) на должность программиста (кто не в курсе, компания занимается производством компьютеров для спортсменов, дайверов ... ) в далеком 2005 году.

Тема перенесена от сюда:
Удалить комментарии из строки

(кстати там же картинка - не могу опять ее же прицепить)

http://www.cyberforum.ru/attachment....p;d=1316092021

-----

кстати когда проходил там собеседование на программера задание было в написании парсера следующего (до сих пор храню)

(К сожалению оригинал задания не сохранился, да и толку от него нет -- он на финском.)

C++
1
2
3
4
"\n[[+-{$(width)}]{$(rows)}+"
"[\\n|[$(space){$(width)}|]"
"{$(rows)}]{$(height)}\\n]"
"{$(lines)}[+-{$(width)}]{$(rows)}+\\n"
Это строка
в строке:
[] - цикл
{число} количество повторений цикла []{10}, либо единичного сивола !{10}
пример: 1{5} = 11111
[12]{5} = 1212121212
[!] = !
[!]{0} = пусто
\x0000 - символ по хекс коду (\x0F0)
\x - экранированный символ (n, t, \, итд по списку + [] {} $)
$(переменная) переменная, получаемая ран-тайм. переменные могут передаваться в [] и {}
например count = 10
sym = !
[$(sym)]{$(count)} = !!!!!!!!!!
парсер должен из всего этого безобразия собрать строку
(результат в аттаче) принимая, что
"height" = 2;
"width" = 13;
"rows" = 10;
"lines" = 5;
"space" = пробел или что другое

Но! запрещены регулярные выражения, запрещен С++, запрещены функции типа strXXX. Только голый С, допускаются функции памяти (выделить/освободить) (статические буферы так же допускаются), указатели. На решение неделя.
----------------
Вдруг кому тоже интересно будет

Что будет не ясно, спрашивайте.

Тут сразу стоит отметить, что из 4 человек, которые, все ж, принесли задание на проверку никто не решил ее в полном объеме.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2011, 17:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Небольшое тестовое задание в финской компании. (C++):

Тестовое задание - C++
private class Connect (){ public Device dev1 = new Device(); public Device dev2 = new Device(); puclic void Connect (){ for...

ООП. Тестовое задание собеседования. - C++
Это тестовое задание для устройста на работу. Я не совсем понимаю что от меня хотят. Не могли бы вы мне далее составить набросок плана...

Тестовое задание для трудоустройства - C++
Решил попробовать устроиться в компанию и узнать что вообще и как. Отправил в компанию резюме, дали тестовое задание: Страуструп. Глава...

Тестовое задание на Junior C++ dev - C++
Доброго времени суток. Неделю назад ради интереса отправил свое резюме в одну компанию, куда требуются с++ юниоры. Получил от них...

Написать ответы на тестовое задание при приёме на работу (исключения, sizeof, mutex) - C++
Добрый день! Ходил недавно на собеседование. Имеется список вопросов, на некоторые ответил правильно на какие-то - нет. Хотелось бы...

Тестовое задание от работадателя. Хотелось бы услышать критику. - C++
Пробую устроиться программистом. Вот одна из компаний выслала мне тестовое задание следующего содержания: Немного поломав голову,...

64
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.09.2011, 17:55 #2
Цитата Сообщение от villu Посмотреть сообщение
функции памяти (выделить/освободить)
realloc можно, надеюсь?
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
15.09.2011, 17:56  [ТС] #3
да, допускается все, что связано с памятью. malloc, calloc, alloc, realloc
если есть какие специфические для компилятора -- тоже допускаются.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.09.2011, 18:02 #4
На брэйнфак немного похоже.) И такой же фак для брэйна.)))

А что значит strXXX? Я таких функций не знаю.)
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
15.09.2011, 18:08  [ТС] #5
А что значит strXXX? Я таких функций не знаю.)
strcmp, strcpy ..
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.09.2011, 18:13 #6
Переменные могут представлять не числовое значение, а символ/строку? Вроде того:

smb = hi
[$(smb)]{4} = hihihihi
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
15.09.2011, 18:14  [ТС] #7
Цитата Сообщение от talis Посмотреть сообщение
Переменные могут представлять не числовое значение, а символ/строку? Вроде того:

smb = hi
[$(smb)]{4} = hihihihi
да, могут.
0
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
15.09.2011, 18:28 #8
villu, каким образом вводятся значения переменных? В самом коде программы (на этом псевдо-брэйнфаке) или во время выполнения (в виде запросов типа $var_name = )?
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.09.2011, 18:39 #9
villu, а memcpy разрешено?
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
15.09.2011, 18:56  [ТС] #10
Про хранение перемены условий не было, можно хоть в дефайнах.
Главное, чтоб они ратайм составлялись.

Мемкопи, меммув можно. На сколько помню мемкмп Тоже допускали.
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.09.2011, 18:58 #11
Я вот думаю, а если нисходящей рекурсией...
0
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
15.09.2011, 19:00 #12
villu, я имею ввиду, не как они хранятся, а как они вводятся в программу.

Добавлено через 1 минуту
В смысле мы же решаем задачу не для данного конкретного кода (где можно задефайнить line, width, rows и т.д.), а пишем универсальный парсер для подобных программ.

Добавлено через 59 секунд
talis, естественно, я думаю, это лучший вариант. "Тело" очередной вложенности передаём рекурсивно функции парсера.
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.09.2011, 19:01 #13
Такой вопрос: в коде могут встречаться пробелы/ньюлайны/табуляции? Могу я записать:

Код
[    15  ]    {   48
  }
или их быть не может:

Код
[15]{48}
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
15.09.2011, 19:02  [ТС] #14
Ааа. Я колбек делал на каждую переменную найденную, потом представлял, ктото прям при парсинге хеш считал, потом получал значение из таблицы.
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.09.2011, 19:09 #15
villu, а можно для вывода ошибок использовать fprintf в stderr? а то как-то и отлаживать-то неудобно, и работать потом...

Добавлено через 3 минуты
или они считаются частью строки? то есть
["hello world"]{4} = "hello world""hello world""hello world""hello world"
0
15.09.2011, 19:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2011, 19:09
Привет! Вот еще темы с ответами:

Небольшое затруднение - C++
Доброго времени суток, форумчане. Почему этот код при введении значения yourword допустим "a b" выводит на экран не "a ba ba b", а "a...

Небольшое уточнение - C++
Дан массив. в нем выполняется поиск элемента последовательным или бинарным методами (в зависимости от заданных параметров). вот код полной...

Небольшое исправление (2) - C++
Собственно нужно при нажатии кнопки " ' " нужно вывести на экран содержимое первого окна в новом окне с кнопкой ОК. Сама кнопка работает,...

Небольшое исправление - C++
Собственно нужно при нажатии кнопки " ' " нужно вывести на экран содержимое первого окна в новом окне с кнопкой ОК. Сама кнопка работает,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru