|
заставил Бендера
|
|
Алгоритмы. Поиск верного решения задачи.06.08.2011, 01:53. Показов 11379. Ответов 79
Метки нет (Все метки)
Крик души. Есть много замечательных книг по программированию, в них часто приводят стандартные алгоритмы. Переработал несколько из них:
Культин_С_С++_в задачах и примерах Рацеев С.М. Язык Си. Структуры данных и алгоритмы Седжвик Р. Фундаментальные алгоритмы на C++. (увы не вся.) Но после прочтения, все равно огромные трудности с алгоритмической частью. Курс программирования дался очень тяжко. Подскажите в каком направлении двигаться, литературу честно говоря читать уже в без толку, когда не могу придумать как найти наибольшую цифру в числе. Конечно можно набрать кучу доп.задач, пробовать решать что то с форума.. Как говорил мой преподаватель: "я в программировании был полный ноль, пока не встретил одну книгу которая и научила программировать" - ведь программирование это не знание языка, а способность находить рациональные решения. Расскажите, что вам помогло сложить это самое рациональное решение.
0
|
|
| 06.08.2011, 01:53 | |
|
Ответы с готовыми решениями:
79
Алгоритмы для решения Написать программу решения системы тригонометрических уравнений (разветвляющиеся алгоритмы)
|
|
Higher
|
|||
| 06.08.2011, 21:51 | |||
0
|
|||
|
Заблокирован
|
||
| 06.08.2011, 21:56 | ||
|
Что касается адгоритмов, то о том и идет речь, что они уже написаны! Поэтому почему бы ими не воспользоваться?! Почему вы вмес то стандартных алгоритмов пытаетесь написать собственную функцию поиска максимального элемента? Почему вы вместо стандартного алгоритма будете писать собственную функцию минимального элемента? Почему вы вместо стандартного алгоритма подсчета элементов, удовлетворяющих заданному условию, бцдете писать собственную функцию?! Не проще ли один раз написать итератор, который просто элементарный?! И тогда вы сможете использовать, практически, любой алгоритм С++? Ваша проблема в том, что вы совершенно не понимаете С++ и мыслите в процедурном стиле! То есть С++ совершенно вас не научил мыслить объектно-ориентированно!
0
|
||
|
Higher
|
||||||
| 06.08.2011, 22:09 | ||||||
Уважаю!Во-вторых, приведите мне код, который делает то же самое. Я крайне сомневаюсь, что он получится в одну строку. Вопрос - зачем так извращаться, если мне нужна одна элементарная функция, которая по сложности приблизительно равна а + б? Заметьте, в формулировке фигурировало слово "функция".
0
|
||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 06.08.2011, 22:25 | |
|
Сыроежка, зачем писать итератор, когда можно воспользоваться строковыми потоками и получить то же самое?
0
|
|
|
заставил Бендера
|
||||
| 07.08.2011, 00:53 [ТС] | ||||
|
Добавлено через 2 минуты Добавлено через 2 минуты
0
|
||||
|
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
|
|
| 07.08.2011, 01:23 | |
|
не путайте программирование в институте и в реальной работе. в институте ваша цель не получить результат, а понять принцип по которому он получается, т.е. реализовать еще раз то, что было реализовано до вас 100500 раз. в конце концов курс по программированию называется "Алгоритмические языки" или "Объектно-ориентированное программирование", а не "С++ STL".
а в реальной работе все наоборот - стоит максимально использовать уже созданное до тебя. это экономит время и силы.
0
|
|
|
Модератор
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
|
||||||||||||||
| 07.08.2011, 05:17 | ||||||||||||||
Сообщение было отмечено как решение
РешениеСыроежка, я вот тоже не понимаю, в чём гениальность идеи? Вот Вам, кстати, ещё пример решения, абсолютно не оптимальный и где-то в реальной программе его, конечно, лучше не использовать, но просто, чтобы был:
Не по теме: на всякий случай: тщательной проверкой ввода неотрицательного числа, количества доступной оперативной памяти и прав пользователя на запуск приложения сознательно не озадачивался ;)
5
|
||||||||||||||
|
Заблокирован
|
||||
| 07.08.2011, 19:28 | ||||
|
Давайте рассмотрим, какие могут возникнуть задачи. Например, 1. Это исходная задача - найти максимальную цифру. Далее могут возникнуть задачи 2. Найти минимальную цифру 3. Найти сумму цифр числа 4. Найти частичные суммы цифр числа 5. Найти произведение цифр числа 6. Найти частичные произведения цифр числа 7. Подсчитать количество четных цифр в числе 8. Подсчитать количество нечетных цифр в числе 10. Найти в числе заданную цифру 11 записать цифра числа в контейнер 12 Получить все перестановки цифр числа 13. Найти первую цифру в числе, которая входит в заданный набор цифр. и т.д. и т.д. Для каждой этой задачи вы пишите свою функцию. Даже написание сотни очень простых функций чревато возникновением ошибок. Но все, что я перечислили и мог бы перечислить, уже сделано! Например, чтобы подсчитать количество четных или нечетных цифр в числе, если бы вы имели итератор, можно сделать с помощью алгоритма std::count. Найти заданную цифру в числе можно с помощью алгоритма std::find или std::find_if. Переписать цифры в контейнер можно с помощью алгоритма std::copy и т.д. То есть если бы вы имешли входной итератор, то перед вами открываются неограниченные возможности. То есть в от личии от вашего подхода, когда вы пишите сто различных функций и один раз их используете, при написании соответсвующего итератора вы один пишите код и используете его неограниченное число раз! Так как в вашем распоряжении уже написанная библиотека различных сьтандартных алгоритмов. Как говорится, почувствуйте разницу! Добавлено через 59 секунд Хорошая идея, мне она в голову сразу же не пришла. ![]() Добавлено через 5 минут
0
|
||||
|
Higher
|
|||
| 07.08.2011, 19:29 | |||
|
Какие-то итераторы писать здесь - лишнее. А, блин, это же выше меня написали... Перейдете вы на какой-нибудь паскаль и сразу же повеситесь без знания элементарных алгоритмов.
0
|
|||
|
заставил Бендера
|
|
| 07.08.2011, 19:32 [ТС] | |
|
0
|
|
|
Заблокирован
|
||
| 07.08.2011, 19:42 | ||
|
На самом деле все, что требуется - это получить поток цифр, из которых состоит число. И с этим потоком цифр можно делать все, что угодно. Как получить поток цифр? Это уже другой вопрос. Я предложил написать входной итератор. Наверное можно использовать и stringstream для этих целей. Но в любом случае эта идея основопологающая и продуктивная в отличии от написания частной функции, которую написали, а затем выбросили в мусорное ведро, так как задача слегка изменилась. Вот когда программист мыслит таким образом, то есть смотрит на задачу с точки зрения ее обобщения и перспективы использования, это и говорит о его квалификации, чтобы мне тут не говорил модератор. А когда программист не в состоянии мыслить абстрактно, а каждый раз вступает в рукопашное программирования каждый раз решая частную задачу, которая не пригодна при незначительных изменениях условий, то это говорит о невысокой его квалификации. и меня в этом переубедить нельзя. Кстати сказать, именно поэтому в С++ появилось шаблонное программирование, потому что оно открывает новые перспективы абстрактного мышления.
0
|
||
| 07.08.2011, 20:55 | |
|
0
|
|
|
Модератор
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
|
|||||||
| 07.08.2011, 22:14 | |||||||
Вот для разнообразия со строкой пример...
0
|
|||||||
|
Higher
|
|||
| 07.08.2011, 22:32 | |||
|
Понимаете, существуют учебные задачи, которые не имеют реального применения. Их цель - обучить решающего базовым алгоритмам. Если вы напишите класс, разбивающий число на цифры и примените к нему max_element/какой либо другой стандартный алгоритм, то так и не поймете алгоритм разбиения числа на цифры с помощью остатка от деления, к примеру. Вы-то, может, его и знаете, но все с чего-то начинали. http://www.boost.org/doc/libs/... erformance
1
|
|||
|
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
|
||
| 08.08.2011, 13:30 | ||
|
000000 001001 010010 100100 011011 101101 110110 002002 и т.д. либо в лексикографическом порядке: 000000 001001 002002 ... 009009 010010 и т.д.
0
|
||
|
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||
| 08.08.2011, 13:34 | ||
|
0
|
||
|
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
|
|
| 08.08.2011, 13:35 | |
|
0
|
|
|
Higher
|
|||
| 08.08.2011, 13:37 | |||
|
O(10^3) - перебор только первых трех чисел. Ну или более сложный вариант этой задачи - найти общее количество n-значных счастливых билетов(n четное, не больше 100). Можно без длинной арифметики, просто алгоритм =)
0
|
|||
|
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
|
| 08.08.2011, 13:39 | |
|
0
|
|
|
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
|
|||
| 08.08.2011, 13:41 | |||
|
Добавлено через 47 секунд Просто это комбинаторная задачка, количество легче на бумаге найти, а вот вывести все значения гораздо интереснее в том или ином порядке.
0
|
|||
| 08.08.2011, 13:41 | |
|
Инкапсуляция. Поиск верного решения Определить тип задачи и указать возможные алгоритмы решения
Поиск решения задачи в Excel Поиск архитектурного решения для поставленной задачи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|