Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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

Но после прочтения, все равно огромные трудности с алгоритмической частью. Курс программирования дался очень тяжко. Подскажите в каком направлении двигаться, литературу честно говоря читать уже в без толку, когда не могу придумать как найти наибольшую цифру в числе. Конечно можно набрать кучу доп.задач, пробовать решать что то с форума.. Как говорил мой преподаватель: "я в программировании был полный ноль, пока не встретил одну книгу которая и научила программировать" - ведь программирование это не знание языка, а способность находить рациональные решения.
Расскажите, что вам помогло сложить это самое рациональное решение.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 11:56     Алгоритмы. Поиск верного решения задачи. #16
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
diagon, отличный сайт) но большинство уже решал.
Их там 600 штук, большинство - это по крайней мере более 300 =)
А если более 300 задач там решить, то таких вопросов возникать не должно
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
06.08.2011, 12:04     Алгоритмы. Поиск верного решения задачи. #17
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
diagon, отличный сайт) но большинство уже решал.
А там и второй раз решить не запрещается Нетривиальная задача имеет, как правило, более одного способа решения. Часто много более. Так что решать можно и уже решённые задачи, но подходя с другой стороны.
IIIa66uMEM6eP
заставил Бендера
435 / 291 / 10
Регистрация: 05.12.2010
Сообщений: 1,644
Записей в блоге: 6
06.08.2011, 12:09  [ТС]     Алгоритмы. Поиск верного решения задачи. #18
Цитата Сообщение от diagon Посмотреть сообщение
Их там 600 штук, большинство - это по крайней мере более 300
уговорили)) я первые штук 15 знакомых увидел)
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
06.08.2011, 12:20     Алгоритмы. Поиск верного решения задачи. #19
Цитата Сообщение от diagon Посмотреть сообщение
Порешайте =)
Практика - лучший способ.

Добавлено через 2 минуты

А не проще ли немного изменить условие?
C++
1
while (number > 0)
на
C++
1
while (number)
И применять abs к цифрам.
Мало ли, вдруг исходное число еще понадобится.
Совсем не проще. Лучше в новую переменную модуль прежней записать и с ней работать, чем abs много раз вызывать (предположим, что когда-нибудь числа можно будет много-много разрядные хранить), число итераций сильно увеличится.

Добавлено через 1 минуту
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
очень критично и не обосновано. хотя ваше мнение - думайте как хотите.
Я ничего плохого о вас не думаю, все с юмором сказано, уж больно лихо вы все перелопатили.

Добавлено через 2 минуты
Цитата Сообщение от diagon Посмотреть сообщение
Их там 600 штук, большинство - это по крайней мере более 300 =)
А если более 300 задач там решить, то таких вопросов возникать не должно
А можно адресом сайта поделиться?

Добавлено через 3 минуты
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
3 я описал в посте - что не она увы не вся.
Могу поделиться, куда вам скинуть?
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 12:25     Алгоритмы. Поиск верного решения задачи. #20
Цитата Сообщение от Olga_ Посмотреть сообщение
А можно адресом сайта поделиться?
Он прямо в посте, который вы процитировали =)

Добавлено через 1 минуту
Цитата Сообщение от Olga_ Посмотреть сообщение
чем abs много раз вызывать (предположим, что когда-нибудь числа можно будет много-много разрядные хранить), число итераций сильно увеличится.
Да ну, там одна проверка всего...
C++
1
#define abs(x) ( (x) < 0 ? -(x) : (x) )
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
06.08.2011, 12:26     Алгоритмы. Поиск верного решения задачи. #21
Цитата Сообщение от diagon Посмотреть сообщение
Он прямо в посте, который вы процитировали =)

Добавлено через 1 минуту

Да ну, там одна проверка всего...
C++
1
#define abs(x) ( (x) < 0 ? -(x) : (x) )
У меня не отображается...
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 12:28     Алгоритмы. Поиск верного решения задачи. #22
http://********/?main=tasks
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
06.08.2011, 12:28     Алгоритмы. Поиск верного решения задачи. #23
Цитата Сообщение от diagon Посмотреть сообщение
Да ну, там одна проверка всего...
C++
1
#define abs(x) ( (x) < 0 ? -(x) : (x) )
Так эта одна проверка для каждой цифры - в результате много проверок (количество итерация), я об этом
IIIa66uMEM6eP
заставил Бендера
435 / 291 / 10
Регистрация: 05.12.2010
Сообщений: 1,644
Записей в блоге: 6
06.08.2011, 12:29  [ТС]     Алгоритмы. Поиск верного решения задачи. #24
Цитата Сообщение от Olga_ Посмотреть сообщение
Могу поделиться, куда вам скинуть?
нет, книга вся.. решено далеко не все.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
06.08.2011, 12:57     Алгоритмы. Поиск верного решения задачи. #25
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
нет, книга вся.. решено далеко не все.
Тогда ладно, а то в книге 5 частей и физически она разбита на две, в первой 1-4 части, во второй 5 часть

Добавлено через 8 минут
Еще есть неплохая книжка Шень А. Программирование: теоремы и задачи. Она ориентирована на Паскаль, но можно попытаться в С++ попереводить и проанализировать

Добавлено через 18 минут
IIIa66uMEM6eP, а не хотите написать функцию, которая бы возвращала максимальную цифру в восьмеричной записи числа n
IIIa66uMEM6eP
заставил Бендера
435 / 291 / 10
Регистрация: 05.12.2010
Сообщений: 1,644
Записей в блоге: 6
06.08.2011, 17:07  [ТС]     Алгоритмы. Поиск верного решения задачи. #26
Цитата Сообщение от Olga_ Посмотреть сообщение
а не хотите написать функцию
попробуем)
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
06.08.2011, 18:32     Алгоритмы. Поиск верного решения задачи. #27
Сравните потом свой алгоритм с таким:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cmath>
using namespace std;
 
int Max(unsigned int x)
{
   int max, digit;
   max = x & 7;
   x >>= 3;
   while (x)
   {
       digit = x & 7;
       if (digit > max)
          max = digit;
       x >>= 3;
   }
   return max;
}
 
int main()
{
   int x;
   cout << "x = ";
   cin >> x;
   cout << Max(abs(x)) << endl;
   return 0;
}
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 18:44     Алгоритмы. Поиск верного решения задачи. #28
Цитата Сообщение от Olga_ Посмотреть сообщение
функцию, которая бы возвращала максимальную цифру в восьмеричной записи числа n
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int max_digit(int n){
    return n ? std::max( max_digit(n / 8), abs(n % 8) ) : 0;
}
int main(){
    int n;
    std::cin >> n;
    std::cout << max_digit(n);
}
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
06.08.2011, 18:53     Алгоритмы. Поиск верного решения задачи. #29
Цитата Сообщение от diagon Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int max_digit(int n){
    return n ? std::max( max_digit(n / 8), abs(n % 8) ) : 0;
}
int main(){
    int n;
    std::cin >> n;
    std::cout << max_digit(n);
}
/ и % ой как не экономно, не зря же основание 8
Да еще и итеративный алгоритм предпочтительнее рекурсивного
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2011, 19:00     Алгоритмы. Поиск верного решения задачи.
Еще ссылки по теме:
C++ Не могу понять решения задачи
Нужны задачи для решения C++
C++ Проверьте правильность решения задачи
Алгоритм решения олимпиадной задачи C++

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

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
06.08.2011, 19:00     Алгоритмы. Поиск верного решения задачи. #30
Цитата Сообщение от Olga_ Посмотреть сообщение
/ и % ой как не экономно, не зря же основание 8
В принципе верно, но если заглянуть в ассемблерный код, то там запросто можно обнаружить сдвиг вместо деления и and вместо остатка.
Yandex
Объявления
06.08.2011, 19:00     Алгоритмы. Поиск верного решения задачи.
Ответ Создать тему
Опции темы

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