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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.96
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
#1

Алгоритмы. Поиск верного решения задачи. - C++

06.08.2011, 01:53. Просмотров 6100. Ответов 79
Метки нет (Все метки)

Крик души. Есть много замечательных книг по программированию, в них часто приводят стандартные алгоритмы. Переработал несколько из них:
Культин_С_С++_в задачах и примерах
Рацеев С.М. Язык Си. Структуры данных и алгоритмы
Седжвик Р. Фундаментальные алгоритмы на C++. (увы не вся.)

Но после прочтения, все равно огромные трудности с алгоритмической частью. Курс программирования дался очень тяжко. Подскажите в каком направлении двигаться, литературу честно говоря читать уже в без толку, когда не могу придумать как найти наибольшую цифру в числе. Конечно можно набрать кучу доп.задач, пробовать решать что то с форума.. Как говорил мой преподаватель: "я в программировании был полный ноль, пока не встретил одну книгу которая и научила программировать" - ведь программирование это не знание языка, а способность находить рациональные решения.
Расскажите, что вам помогло сложить это самое рациональное решение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2011, 01:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Алгоритмы. Поиск верного решения задачи. (C++):

Алгоритмы для решения - C++
Через какие алгоритмы можно реализовать эти две задачи.

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

Задачи на циклические алгоритмы - C++
Помогите пожалуйста сделать в с++: 1)Написать функцию, которая по целому a вычисляет и возвращает максимальное n, при котором n! ≤ a. ...

не знаю решения задачи в c ++ - C++
п. 5.18 Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. Внизу страницы есть редактор формул ...

Алгоритм решения задачи - C++
Помогите пожалуйста сделать алгоритм по коду, из блоков и стрелочек Вот код: //Библиотека контейнера #include<list> //Библиотека...

Алгоритм решения задачи - C++
Есть вот такая вот задача . На дороге в некоторых местах разбросаны золотые монеты. Для каждой монеты известно ее местоположение, которое...

79
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 19:04 #31
Цитата Сообщение от Olga_ Посмотреть сообщение
/ и % ой как не экономно, не зря же основание 8
Да еще и итеративный алгоритм предпочтительнее рекурсивного
Однако мой вариант лучше, ибо красота - страшная сила =)
Ну и надо очень постараться, чтобы подобрать тесты, при которых будет заметна разница.
Могу в свою очередь предложить небольшую задачку: нужно посчитать суммарное количество счастливых билетов с асимптотикой хотя бы O(10^3). Впринципе можно и за O(~140) сделать, но это уже сложнее =)
P.S. счастливый билет - это шестизначное число, сумма левых трех цифр которого равна сумме правых трех цифр.
1
Сыроежка
Заблокирован
06.08.2011, 20:14 #32
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
Крик души. Есть много замечательных книг по программированию, в них часто приводят стандартные алгоритмы. Переработал несколько из них:
Культин_С_С++_в задачах и примерах
Рацеев С.М. Язык Си. Структуры данных и алгоритмы
Седжвик Р. Фундаментальные алгоритмы на C++. (увы не вся.)

Но после прочтения, все равно огромные трудности с алгоритмической частью. Курс программирования дался очень тяжко. Подскажите в каком направлении двигаться, литературу честно говоря читать уже в без толку, когда не могу придумать как найти наибольшую цифру в числе. Конечно можно набрать кучу доп.задач, пробовать решать что то с форума.. Как говорил мой преподаватель: "я в программировании был полный ноль, пока не встретил одну книгу которая и научила программировать" - ведь программирование это не знание языка, а способность находить рациональные решения.
Расскажите, что вам помогло сложить это самое рациональное решение.
Я поражаюсь тому, что вы осилили Седжвика. Насколько я знаю, это довольно толстая книга!
Что касается вашей задачи, то ее легко сделать,как говорится, "в лоб".
Но есть более изящное решение, если вас интересуют стандартные алгоритмы. Вам надо написать входной итератор, который возвращает очередную цифру числа. И для этого входного итератора использовать стандартный алгоритм std::max_element.
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
06.08.2011, 20:29  [ТС] #33
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я поражаюсь тому, что вы осилили Седжвика. Насколько я знаю, это довольно толстая книга!
Что касается вашей задачи, то ее легко сделать,как говорится, "в лоб".
Но есть более изящное решение, если вас интересуют стандартные алгоритмы. Вам надо написать входной итератор, который возвращает очередную цифру числа. И для этого входного итератора использовать стандартный алгоритм std::max_element.
Решение для задачи давно найдено. По сейджевику уже отписывался.
0
Сыроежка
Заблокирован
06.08.2011, 20:33 #34
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
Решение для задачи давно найдено. По сейджевику уже отписывался.
Вопрос состоял не в том, чтобы найти решение, так как автор темы сразу же указал, что он сделал эту задачу "в лоб" . А вопрос состоял в том, как связать эту задачу со стандартными алгоритмами.
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
06.08.2011, 20:39  [ТС] #35
Цитата Сообщение от Сыроежка Посмотреть сообщение
А вопрос состоял в том, как связать эту задачу со стандартными алгоритмами.
вы меня не поняли.. вопрос был как научится алгоритмически мыслить, на что были даны очень хорошие ответы.
0
Сыроежка
Заблокирован
06.08.2011, 20:41 #36
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
вы меня не поняли.. вопрос был как научится алгоритмически мыслить, на что были даны очень хорошие ответы.
А чем мой ответ плох?! Я вам подсказал очень оригинальную идею, которая никому в голову даже не пришла! Как раз чтобы алгоритмически мыслить, нужно хорошо знать стандартные алгоритмы.

Я так понимаю, что вы просто не в состоянии оценить мою идею! Значит мало книг вы еще прочитали по С++!
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
06.08.2011, 20:58 #37
Цитата Сообщение от diagon Посмотреть сообщение
Однако мой вариант лучше...
Что за самовлюбленный народ..., каждый третий на этом форуме... аж желания общаться нет и посещать этот форум...
0
Сыроежка
Заблокирован
06.08.2011, 21:09 #38
Чтобы вы поняли, насколько я подсказал интересную идею, то написание предложенного мною итератора повзолит вам использовать его в любоых стандартных алгоритмах! Вы можете, например, не только найти максимальную цифру числа, но и минимальную. Вы можете также вывести число в обратном порядке. Вы можете проверить, существует ли в числе конкретная цифра и т.д. То есть перспективы у такого подхода неограничены в отличии от всех тех алгоритмов, которые вам здесь приводили, так как эти алгоритмы решают всего лишь одну задачу, а потому совершенно не гибкие и имеют очень узкое применение!
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 21:42 #39
Цитата Сообщение от Olga_ Посмотреть сообщение
Что за самовлюбленный народ
Что за серьезное отношение к юмору, пусть и плоскому?

Цитата Сообщение от Сыроежка Посмотреть сообщение
То есть перспективы у такого подхода неограничены в отличии от всех тех алгоритмов, которые вам здесь приводили, так как эти алгоритмы решают всего лишь одну задачу, а потому совершенно не гибкие и имеют очень узкое применение!
Быстрее за минуту-другую написать нужную функцию, чем разбираться в документации неизвестного как реализованного алгоритма.
0
Сыроежка
Заблокирован
06.08.2011, 21:45 #40
Цитата Сообщение от diagon Посмотреть сообщение
Что за серьезное отношение к юмору, пусть и плоскому?


Быстрее за минуту-другую написать нужную функцию, чем разбираться в документации неизвестного как реализованного алгоритма.
Глупость! Это как раз подход тех, кого нельзя считать программистами. Программирование - это построение абстракций. Как только мало-мальски изменятся условия задачи, вам придется писать очередную " нужную" функцию! А зачем тогда, позвольте вас спросить, разработчики С++ старались и писали стандартные алгоритмы?! Я вам сразу же могу сказать, что с таким мышлением, как у вас, из вас выйдет плохой программист так сказать, "местечковый", который не в состоянии мыслить абстрактно и на каждый "чих" пишет "нужную" функцию!

Представьте к примеру, что условия задачи изменились, и нужно подсчитать сумму цифр числа? Что тогда? Будете писать очередную "нужную" функцию? А если требуется подсчитать число четных цифр в числе? Опять будете писать "Нужную" функцию?!

В моем же случае ничего писать не надо! Все уже написано! Вы можете применить любой алгоритм, который работает со входными итераторами, используя один раз написанный итератор! Повторяю: один раз написанный итератор!Его возможно просто впечатляют!

Вы - тот программист, который вместо того, чтобы, допустим, лжин раз написать реверсивный итератор, постоянно пишет новую функцию для решения задачи, которая делается за минуту с помощью реверсивных итераторв!
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 21:51 #41
Цитата Сообщение от Сыроежка Посмотреть сообщение
Глупость! Это как раз подход тех, кого нельзя считать программистами. Программирование - это построение абстракций.
Еще вчера вы были категорически против абстракции =)
А зачем тогда, позвольте вас спросить, разработчики С++ старались и писали стандартные алгоритмы?!
В STL включены только действительно универсальные алгоритмы, поиск максимальной цифры в n-ой системе счисления таким алгоритмом назвать нельзя. И есть разница - разработчики с++ и некий персонаж-с-горы. Если первым вполне можно доверять, то реализацию второго не помешало бы проверить. Вот только быстрее и надежнее свою функцию написать =)
0
Сыроежка
Заблокирован
06.08.2011, 21:56 #42
Цитата Сообщение от diagon Посмотреть сообщение
Еще вчера вы были категорически против абстракции =)

В STL включены только действительно универсальные алгоритмы, поиск максимальной цифры в n-ой системе счисления таким алгоритмом назвать нельзя. И есть разница - разработчики с++ и некий персонаж-с-горы. Если первым вполне можно доверять, то реализацию второго не помешало бы проверить. Вот только быстрее и надежнее свою функцию написать =)
Во-первых, я не знаю, где я был пролтив абстракций. Это скорей всего вы просто путатет божий дар с яичницей! Я был не против абстракций, а говорил про особенности языка С++. А это не одно и тоже. Так что не передергивайте.

Что касается адгоритмов, то о том и идет речь, что они уже написаны! Поэтому почему бы ими не воспользоваться?! Почему вы вмес то стандартных алгоритмов пытаетесь написать собственную функцию поиска максимального элемента? Почему вы вместо стандартного алгоритма будете писать собственную функцию минимального элемента? Почему вы вместо стандартного алгоритма подсчета элементов, удовлетворяющих заданному условию, бцдете писать собственную функцию?! Не проще ли один раз написать итератор, который просто элементарный?! И тогда вы сможете использовать, практически, любой алгоритм С++?

Ваша проблема в том, что вы совершенно не понимаете С++ и мыслите в процедурном стиле! То есть С++ совершенно вас не научил мыслить объектно-ориентированно!
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 22:09 #43
Цитата Сообщение от Сыроежка Посмотреть сообщение
Это скорей всего вы просто путатет божий дар с яичницей!
Вот это самооценка Уважаю!

Цитата Сообщение от Сыроежка Посмотреть сообщение
Почему вы вмес то стандартных алгоритмов пытаетесь написать собственную функцию поиска максимального элемента?
Во-первых, не пытаюсь - написал.
Во-вторых, приведите мне код, который делает то же самое.
Я крайне сомневаюсь, что он получится в одну строку.
Вопрос - зачем так извращаться, если мне нужна одна элементарная функция, которая по сложности приблизительно равна а + б?


Цитата Сообщение от Сыроежка Посмотреть сообщение
вы совершенно не понимаете С++
Где-то я это уже слышал... Но аргументов так и не дождался.

Цитата Сообщение от Сыроежка Посмотреть сообщение
мыслите в процедурном стиле!
Возможно, потому, что задача в процедурном стиле?
Заметьте, в формулировке фигурировало слово "функция".

Цитата Сообщение от Сыроежка Посмотреть сообщение
То есть С++ совершенно вас не научил мыслить объектно-ориентированно!
Да, вы правы. Я думаю, все оттого, что с++ неодушевлен. Я пытался его разговорить, но это действительно так.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
06.08.2011, 22:25 #44
Сыроежка, зачем писать итератор, когда можно воспользоваться строковыми потоками и получить то же самое?
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
07.08.2011, 00:53  [ТС] #45
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я вам подсказал очень оригинальную идею, которая никому в голову даже не пришла!
это к той самой теме, где 50 способов написания "Hello world"

Добавлено через 2 минуты
Цитата Сообщение от Сыроежка Посмотреть сообщение
Вам надо написать входной итератор, который возвращает очередную цифру числа. И для этого входного итератора использовать стандартный алгоритм std::max_element.
Расскажите это преподавателю в вузе, лично нас за это ругают) Всячески отучают программировать мышкой. Если это есть - замечательно, нужно самому написать и понять суть.

Добавлено через 2 минуты
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я так понимаю, что вы просто не в состоянии оценить мою идею! Значит мало книг вы еще прочитали по С++!
увы, не оценил, я не счетаю это более рациональным решением данной задачи.. мало книг? Да они мне снятся уже, у меня книжная полка плюсами обставлена, не счетая электронной библиотеки.
0
07.08.2011, 00:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2011, 00:53
Привет! Вот еще темы с ответами:

Нужны задачи для их решения - C++
Здравствуйте. Нужны задачи для закрепления изученного материала. Что интересует(с чем я могу работать(база)): "напечатать", ...

Написать программу на С/С++ решения задачи: - C++
m=min{aij} 1<=i<=n 1<=j<=n

Не могу понять решения задачи - C++
Звучит она так: Составить программу, которая создаёт файл и записывает в него 5 введеных целых чисел. Надеюсь на помощь (и целое...

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


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

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

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