Сборник задач по C/C++
Модератор: Модераторы разделов
Сборник задач по C/C++
Посоветуйте плз. Заранее благодарен.
-
- Сообщения: 47
- ОС: Gentoo Linux 2008.0
Re: Сборник задач по C/C++
М.В. Мозговой - 85 нетривиальных проектов, решений и задач.djvu
иСКУССТВО ПРОГРАММИРОВАНИЯ гЕРБЕРТ шИЛДТ
иСКУССТВО ПРОГРАММИРОВАНИЯ гЕРБЕРТ шИЛДТ
мерзкий тип....
Re: Сборник задач по C/C++
задачи не зависят от языка. разве что на каждом языке можно по своему написать. если вы хотите закрепить знания языка, то возмите кернигана и ритчи, там после каждой главы (или пункта) есть простенькие упражнения. а если вы хотите что-то более сложное, то подойдут олимпиадные задачи. вот то что вам надо.
-
- Сообщения: 47
- ОС: Gentoo Linux 2008.0
Re: Сборник задач по C/C++
Да олимпиадные задачи то что надо а приложить пару книжек варезных это не противоречит правилам форума?)Могу приложить)Помню хорошее время было школа) задачи
мерзкий тип....
Re: Сборник задач по C/C++
Konstantyn, wzrd большущее спасибо!
Konstantyn, к сожалению прротиворечит Но зато можно слать в приват Если пошлете - буду очень благодарен
wzrd, просто хотелось бы на всякий случай что бы были и решения.
Konstantyn, к сожалению прротиворечит Но зато можно слать в приват Если пошлете - буду очень благодарен
wzrd, просто хотелось бы на всякий случай что бы были и решения.
-
- Сообщения: 47
- ОС: Gentoo Linux 2008.0
Re: Сборник задач по C/C++
Хорошо пришю но утром уже у меня на отрубленом винте всё если найду то там с рашеними в общем всё бенч
мерзкий тип....
-
- Сообщения: 47
- ОС: Gentoo Linux 2008.0
Re: Сборник задач по C/C++
Размер файлов большой слишком в личку напиши мне мыло я тебе на мыло кину,Нашёл книжки класные очень
мерзкий тип....
Re: Сборник задач по C/C++
Сейчас как приложу... мало не покажется.
Тема закрыта.
UPD. По просьбе топикстартера Veonos'а тему открываю, но до первого рецидива с последующей раздачей плюшек. Так же напоминаю, что личную переписку (аська не работает и т.п.) переносите в личку.
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: Сборник задач по C/C++
Кто может еще что-нибудь посоветовать, кроме 2х уже упомянутых?
* М.В. Мозговой - 85 нетривиальных проектов, решений и задач
* ИСКУССТВО ПРОГРАММИРОВАНИЯ ГЕРБЕРТ ШИЛДТ
Не обязательно C/С++. Просто задачники по программированию.
* М.В. Мозговой - 85 нетривиальных проектов, решений и задач
* ИСКУССТВО ПРОГРАММИРОВАНИЯ ГЕРБЕРТ ШИЛДТ
Не обязательно C/С++. Просто задачники по программированию.
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Re: Сборник задач по C/C++
Выбираешь любой opensource проект, идёщь в раздел ToDo и вот они! А ещё тебе решение этих задачек проверят, когда будешь патч возвращать.Stauffenberg писал(а): ↑10.01.2012 18:24Кто может еще что-нибудь посоветовать, кроме 2х уже упомянутых?
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: Сборник задач по C/C++
Мне нужны логические задачки, а не просто хакинг.
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Re: Сборник задач по C/C++
Stauffenberg
Какого уровня задачки? Для учащегося программированию или для развития навыка алгоритмизации?
Какого уровня задачки? Для учащегося программированию или для развития навыка алгоритмизации?
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: Сборник задач по C/C++
NickLion
Скорее для развития навыков алгоритмизации. Интересует все, что делает из программиста... хорошего программиста
Скорее для развития навыков алгоритмизации. Интересует все, что делает из программиста... хорошего программиста
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Re: Сборник задач по C/C++
Кто может еще что-нибудь посоветовать, кроме 2х уже упомянутых?
* М.В. Мозговой - 85 нетривиальных проектов, решений и задач
* ИСКУССТВО ПРОГРАММИРОВАНИЯ ГЕРБЕРТ ШИЛДТ
Не обязательно C/С++. Просто задачники по программированию.
Как насчёт этого: Шень А. Программирование: теоремы и задачи. М.: МЦНМО, 2004?
Re: Сборник задач по C/C++
Кнута не предлагать?Stauffenberg писал(а): ↑10.01.2012 20:22Скорее для развития навыков алгоритмизации. Интересует все, что делает из программиста... хорошего программиста
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: Сборник задач по C/C++
sash-kan писал(а): ↑11.01.2012 17:23Кнута не предлагать?Stauffenberg писал(а): ↑10.01.2012 20:22Скорее для развития навыков алгоритмизации. Интересует все, что делает из программиста... хорошего программиста
Уже читаю. Вчера нашел. Все равно спасибо
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Re: Сборник задач по C/C++
Stauffenberg писал(а): ↑10.01.2012 20:22NickLion
Скорее для развития навыков алгоритмизации. Интересует все, что делает из программиста... хорошего программиста
Задача:
На вход (read() по 1 байту из некого места) приходит 1 байт. Этот байт - последовательность битов, захваченная на неком последовательном интерфейсе. Нужно набирать приходящие байты в буфер и находить в нём последовательность 01111110. Как только эта последовательность найдена - начинать запись данных в массив. Передача побитная, но биты упакованы в байты и передаются просто последовательно без разбора. Граница байт данных не обязательно совпадает с принятым по read() байтом. Как только снова попалась последовательность 01111110 - прекратить запись, поставить флаг завершения приёма, записать массив принятого и его длину в FIFO. Максимальная длина сообщения для записи - 32 байта. В сообщении не допускается больше 5 единиц подряд. Если оказалось больше 5 единиц или длина превысила 32 байта - "сбросить гистерезис", т.е. если был принят байт 01111110 и начали запись данных, но в процессе обнаружили нарушение ограничений на длину сообщения или более 5 единиц - значит этот байт был не началом нового сообщения, а концом предыдущего и соответственно следующий такой байт будет означать не конец текущего сообщения (не верного), а начало следующего. Приём данных синхронный, чтение из FIFO асинхронное. Фишка в том, что байт начала/конца сообщения 01111110 не обязательно придёт целым байтом, т.е. это может быть 2 байта: 11110111 11101111 . У них в серединке образовалась нужная последовательность, при этом 4 бита на хвосте второго байта - это уже данные, и все остальные данные из этого сообщения будут сдвинуты на 4 бита. Т.е. если следующий байт был 0001011, то собственно байт, который нужно записать в массив на 0 позицию будет 11110001 - 4 младших бита от предыдущего байта и 4 старших битов от текущего байта. Байты данных передаются начиная с младшего бита, т.е. в данном примере в массив нужно записать не 11110001, а 1000111 - перевернули порядок битов. Символы начала/конца (01111110) могут идти подряд без промежутков один за другим или с произвольными промежутками. Допускается использовать только логику и сдвиги, никаких memmem() и аналогичного.
Возможное решение: биты буферизуем в uint16_t, затем в цикле по i от 0 двигаем этот uint16 на i вправо и сравниваем с символом начала/конца. как только совпало - запоминаем i, возвращаемся к исходному буферу и запоминаем биты что правее (16-i) - это начало данных, вычисляем сколько бит от следующего принятого байта пристыковать для получения байта данных, сдвиг, лог. или, запись в массив. etc. Кто скажет как эффективнее/проще/лучше это сделать тот молодец
Спасибо сказали:
Re: Сборник задач по C/C++
Ну, если речь о классических книгах, то естественно стоит упомянуть Кормена (ссылка на озон - так все реквизиты, у меня правда бумажная версия похожа на вот эту, но более поздняя). Очень приятная книга и в конце каждой темы есть задачки для решения. Также есть сайтики с олимпиадными задчками - поворочать мозги подходят - http://acm.timus.ru/, есть ещё классический http://acm.uva.es/problemset/, но там сейчас белиберда какая-то :)
Спасибо сказали:
Re: Сборник задач по C/C++
Вот тут можно чего-нибудь порешать: http://www.diofant.ru/
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: Сборник задач по C/C++
FlySnake писал(а): ↑11.01.2012 21:30Stauffenberg писал(а): ↑10.01.2012 20:22NickLion
Скорее для развития навыков алгоритмизации. Интересует все, что делает из программиста... хорошего программиста
Задача:
На вход (read() по 1 байту из некого места) приходит 1 байт. Этот байт - последовательность битов, захваченная на неком последовательном интерфейсе. Нужно набирать приходящие байты в буфер и находить в нём последовательность 01111110. Как только эта последовательность найдена - начинать запись данных в массив. Передача побитная, но биты упакованы в байты и передаются просто последовательно без разбора. Граница байт данных не обязательно совпадает с принятым по read() байтом. Как только снова попалась последовательность 01111110 - прекратить запись, поставить флаг завершения приёма, записать массив принятого и его длину в FIFO. Максимальная длина сообщения для записи - 32 байта. В сообщении не допускается больше 5 единиц подряд. Если оказалось больше 5 единиц или длина превысила 32 байта - "сбросить гистерезис", т.е. если был принят байт 01111110 и начали запись данных, но в процессе обнаружили нарушение ограничений на длину сообщения или более 5 единиц - значит этот байт был не началом нового сообщения, а концом предыдущего и соответственно следующий такой байт будет означать не конец текущего сообщения (не верного), а начало следующего. Приём данных синхронный, чтение из FIFO асинхронное. Фишка в том, что байт начала/конца сообщения 01111110 не обязательно придёт целым байтом, т.е. это может быть 2 байта: 11110111 11101111 . У них в серединке образовалась нужная последовательность, при этом 4 бита на хвосте второго байта - это уже данные, и все остальные данные из этого сообщения будут сдвинуты на 4 бита. Т.е. если следующий байт был 0001011, то собственно байт, который нужно записать в массив на 0 позицию будет 11110001 - 4 младших бита от предыдущего байта и 4 старших битов от текущего байта. Байты данных передаются начиная с младшего бита, т.е. в данном примере в массив нужно записать не 11110001, а 1000111 - перевернули порядок битов. Символы начала/конца (01111110) могут идти подряд без промежутков один за другим или с произвольными промежутками. Допускается использовать только логику и сдвиги, никаких memmem() и аналогичного.
Базз, Вуди, Рекс и Хэмм убегают от Зурга (это персонажи из мультфильма «Игрушечная история 2» (Toy Story 2)). . Им осталось лишь перейти последний мост, и они будут свободны. Однако мост очень ветхий и сможет одновременно выдержать только двух из них. Также, чтобы перейти мост и не попасть в ловушки и ямы в нём, нужен фонарик. Проблема в том, что у наших четырёх друзей всего один фонарик, а заряда батареи в нём осталось лишь на 60 (шестьдесят) минут. Игрушкам требуется различное время, чтобы перейти мост в одну сторону:
Код: Выделить всё
Игрушка Время
Базз 5 минут
Вуди 10 минут
Рекс 20 минут
Хэмм 25 минут
Итак, задача такова: в каком порядке эти четыре игрушки должны пересечь мост (затратив не более 60 минут), чтобы спастись от Зурга?
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Re: Сборник задач по C/C++
Stauffenberg
fprog.ru почитываем?
_darkus_ из lj почитайте — у него и ежемесячные конкурсы есть, с призами·
fprog.ru почитываем?
_darkus_ из lj почитайте — у него и ежемесячные конкурсы есть, с призами·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Сборник задач по C/C++
нужна коллекция из N эл-тов.
1. время поиска уникального эл-та O(log(N))
2. время вставки/удаления O(log(N))
Дополнительное условие: все элементы упорядочены, т.е. всегда определено соотношение E(j) >= E(k). По этой причине все эл-ты можно "пронумеровать", и обойти по порядку, от самого "малого", до самого "большого".
Требуется за время O(log(N)) отыскать эл-т с заданным номером в этой последовательности. (естественно п1 и п2 не должны пострадать, и остаются в силе)
Число N не должно быть искусственно ограничено.
1. время поиска уникального эл-та O(log(N))
2. время вставки/удаления O(log(N))
Дополнительное условие: все элементы упорядочены, т.е. всегда определено соотношение E(j) >= E(k). По этой причине все эл-ты можно "пронумеровать", и обойти по порядку, от самого "малого", до самого "большого".
Требуется за время O(log(N)) отыскать эл-т с заданным номером в этой последовательности. (естественно п1 и п2 не должны пострадать, и остаются в силе)
Число N не должно быть искусственно ограничено.
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: Сборник задач по C/C++
Это один из моих любимых русскоязычных журналов
Жду 8 номера.
Ну раз даже с призами, то конечно стоит заглянуть
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Re: Сборник задач по C/C++
Stauffenberg писал(а): ↑10.02.2012 17:19Итак, задача такова: в каком порядке эти четыре игрушки должны пересечь мост (затратив не более 60 минут), чтобы спастись от Зурга?
Если предлагается решить, то решил. Решение и ответ интересует или просто для разминки?
Re: Сборник задач по C/C++
Почему же это задача по программированию?
Скорее — задача на смекалку.
Скорее — задача на смекалку.
Re: Сборник задач по C/C++
на c или на c++?
считаете, что для написания программы достаточно лишь смекалки?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: Сборник задач по C/C++
Угу, на C++, хотя почти на Си решение есть.
Решение в виде программы отличается тем, что оно универсально. Например, то, что я накалякал почти не задумываясь спокойно находит минимальное затрачиваемое время и сам способ для любого числа "игрушек". Ну, правда там экспоненциально растёт число состояний для поиска, поэтому без применения эвристик где-то до 19-20 за разумное время ещё считать будет, дальше и память и время слишком требует. Хотя если подумать, то может и проще решение найдётся. Но лень.
Re: Сборник задач по C/C++
интересный вопрос, заданный в теме Сборник задач по C/C++
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: Сборник задач по C/C++
NickLion
не хотите принять участие в ежемесячных конкурсах, которые устраивает _darcus_?
февральский, по-моему, ещё продолжается·
не хотите принять участие в ежемесячных конкурсах, которые устраивает _darcus_?
февральский, по-моему, ещё продолжается·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог