Здравствуйте, C0x, Вы писали:
C0x>Коллеги накидайте плиз задачек для собеза по Си++. Нужно провести скрининг кандидатов примерно на 30 минут. Я никогда не проводил, да и на плюсах давненько не писал. C0x>Основные требования: стандарт 2003 год — это кодовая база с которой кандидату придется работать. C0x>...
Казолось бы на дворе 2025 год, уже 14 лет как есть цпп11 в современных и не очень компиляторах. Если вам нужен человек на поддержку mfc и вы такого найдёте, то это явно будет не зелёный студент а кто-то из старшего поколения. Думаю там тестовые просто не нужны, достаточно будет пообщаться.
Есть строка, в которой записаны русские слова, разделённые пробелом (кодировка utf8). Разбить все слова на слоги.
Например: "накидайте плиз задачек" -> "на-ки-дай-те плиз за-да-чек"
Здравствуйте, _NN_, Вы писали:
_NN>Пожалуйста:
_NN>
_NN>void duplicate(std::vector<int>& v)
_NN>{
_NN> size_t i = 0;
_NN> size_t count = v.size();
_NN> for (auto const& e : v)
_NN> {
_NN> if (i == count)
_NN> break;
_NN> v.push_back(e);
_NN> i++;
_NN> }
_NN>}
_NN>
Хорошая задачка. Тут есть, о чём поговорить. Помимо исправления проблемы, можно предложить отрефакторить и обобщить на несколько типов контейнеров и произвольный тип элемента.
--
Справедливость выше закона. А человечность выше справедливости.
Re[3]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, rg45, Вы писали:
R>Хорошая задачка. Тут есть, о чём поговорить. Помимо исправления проблемы, можно предложить отрефакторить и обобщить на несколько типов контейнеров и произвольный тип элемента.
А ещё справшиваем, почему же не реализован контейней с итератором так, чтобы этот код мог бы всегда работать, ведь это несложная задача.
Здравствуйте, kov_serg, Вы писали: _>Есть строка, в которой записаны русские слова, разделённые пробелом (кодировка utf8). Разбить все слова на слоги. _>Например: "накидайте плиз задачек" -> "на-ки-дай-те плиз за-да-чек"
Интересная задачка. Разве есть какой-то формальный признак к какой гласной лепить согласную? Например, слово "паркет", это "пар-кет", "па-ркет", или "парк-ет"?
Re[3]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, Went, Вы писали:
W>Интересная задачка. Разве есть какой-то формальный признак к какой гласной лепить согласную? Например, слово "паркет", это "пар-кет", "па-ркет", или "парк-ет"?
1. Слог образует гласный звук:
сте-на, ба-ран (с-тена, бара-н — неправильно).
2. Слог начинается с согласного, который стоит перед гласной:
мо-ло-ко, ко-ра (мол-око, кор-а — неправильно).
3. Буквы ь, ъ (которые не означают звуков), й нельзя отрывать от предыдущего слога:
лай-ка, конь-ки, подъ-езд (ла-йка, кон-ьки, под-ъезд — неправильно).
4. Глухие согласные отходят к следующему слогу:
то-чка, мо-шка (в традиционной школе верно также: точ-ка, мош-ка).
5. Звонкие согласные [й], [р], [р’], [л], [л’], [м], [м’], [н], [н’] с последующим шумным согласным отходят к предыдущему слогу:
кор-ка, бул-ка (в традиционной школе верно также: ко-рка, бу-лка).
6. Согласные буквы, образующие один звук, нельзя разносить в разные слоги. Один звук образуют сочетания зж [ж:], тся, ться [ц:].
у-е-зжать, но-си-тся, де-ла-ться (в традиционной школе верно также: у-ез-жать, но-сит-ся, де-лать-ся).
7. Сдвоенные согласные в середине слова относят к следующему слогу:
кла-ссный, хо-ккей, те-ннис (в традиционной школе верно также: клас-сный, хок-кей, тен-нис).
Слоги делятся по восходящей звучности. Каждый звук имеет звучность от 1 до 4: 4 — гласные, 3 — сонорные, 2 — шумные звонкие, 1 — шумные глухие.
8. Конец слога должен быть с максимальной звучностью (цифра 4):
ко-ле-со (14-34-14), ко-мпью-тер (14-31 4-143).
9. Сонорные между гласными относят к следующему слогу: ка-рман (14-3343). Допускается вариант: кар-ман (ошибки не будет).
Если есть сочетание сонорного и шумного, то раздел ставится между ними: пар-та (143-14).
10. Й всегда остается с предыдущим слогом: тай-на (143-34).
W>Интересно, конечно, не знал про такие правила, хотя и там полно исключений. Но, все же, это скорее филологическая задача, нежели на знание С++.
Тут важен подход к задаче, а не само решение
Re[6]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, kov_serg, Вы писали:
W>>Интересно, конечно, не знал про такие правила, хотя и там полно исключений. Но, все же, это скорее филологическая задача, нежели на знание С++. _>Тут важен подход к задаче, а не само решение
Дайте мне поручение, а уж особым я его и сам сделаю. (С) Специалист по особым поручениям.
--
Справедливость выше закона. А человечность выше справедливости.
Re[4]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, _NN_, Вы писали:
_NN>Здравствуйте, rg45, Вы писали:
R>>Хорошая задачка. Тут есть, о чём поговорить. Помимо исправления проблемы, можно предложить отрефакторить и обобщить на несколько типов контейнеров и произвольный тип элемента.
_NN>почему же не реализован контейней с итератором так, чтобы этот код мог бы всегда работать
так std::list вроде не инвалидирует ссылки. Или вопрос только касательно std::vector?
Re[5]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, sergii.p, Вы писали:
SP>Здравствуйте, _NN_, Вы писали:
_NN>>Здравствуйте, rg45, Вы писали:
R>>>Хорошая задачка. Тут есть, о чём поговорить. Помимо исправления проблемы, можно предложить отрефакторить и обобщить на несколько типов контейнеров и произвольный тип элемента.
_NN>>почему же не реализован контейней с итератором так, чтобы этот код мог бы всегда работать
SP>так std::list вроде не инвалидирует ссылки. Или вопрос только касательно std::vector?
Всё правильно. Заодно затрагивается почему и где уместней vector.
Вообще можно и для вектора сделать такие итераторы без инвалидации, но такой вектор кхе-кхе никто особо бы не использовал.
Ну и конечно вопрос на эту тему почему
подходит, т.к. ответ зависит от компилятора и опций оптимизации (из-за UB при переполнении знаковых целых).
GCC этим пользуется, у clang/msvc пока вывод "ожидаемый".
Re[2]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, Hоmunculus, Вы писали:
H>Чтоб нули вам не считать — подсказка — там миллиард
Чтоб нули не считать, следует использовать современную запись:
for (int i = 0; i < 10; i++)
std::cout << 1'000'000'000*i << endl;
И каждый день — без права на ошибку...
Re[9]: Накидайте плиз задачек на знание языка Си++