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

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

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

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

06.08.2011, 01:53. Просмотров 6102. Ответов 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, 11:56 #16
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
diagon, отличный сайт) но большинство уже решал.
Их там 600 штук, большинство - это по крайней мере более 300 =)
А если более 300 задач там решить, то таких вопросов возникать не должно
0
grizlik78
Эксперт С++
1972 / 1465 / 122
Регистрация: 29.05.2011
Сообщений: 3,033
06.08.2011, 12:04 #17
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
diagon, отличный сайт) но большинство уже решал.
А там и второй раз решить не запрещается Нетривиальная задача имеет, как правило, более одного способа решения. Часто много более. Так что решать можно и уже решённые задачи, но подходя с другой стороны.
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
06.08.2011, 12:09  [ТС] #18
Цитата Сообщение от diagon Посмотреть сообщение
Их там 600 штук, большинство - это по крайней мере более 300
уговорили)) я первые штук 15 знакомых увидел)
0
Olga_
842 / 184 / 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 я описал в посте - что не она увы не вся.
Могу поделиться, куда вам скинуть?
1
diagon
Higher
1932 / 1198 / 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) )
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
06.08.2011, 12:26 #21
Цитата Сообщение от diagon Посмотреть сообщение
Он прямо в посте, который вы процитировали =)

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

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

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

Добавлено через 18 минут
IIIa66uMEM6eP, а не хотите написать функцию, которая бы возвращала максимальную цифру в восьмеричной записи числа n
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
06.08.2011, 17:07  [ТС] #26
Цитата Сообщение от Olga_ Посмотреть сообщение
а не хотите написать функцию
попробуем)
0
Olga_
842 / 184 / 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;
}
0
diagon
Higher
1932 / 1198 / 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);
}
0
Olga_
842 / 184 / 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
Да еще и итеративный алгоритм предпочтительнее рекурсивного
0
grizlik78
Эксперт С++
1972 / 1465 / 122
Регистрация: 29.05.2011
Сообщений: 3,033
06.08.2011, 19:00 #30
Цитата Сообщение от Olga_ Посмотреть сообщение
/ и % ой как не экономно, не зря же основание 8
В принципе верно, но если заглянуть в ассемблерный код, то там запросто можно обнаружить сдвиг вместо деления и and вместо остатка.
1
06.08.2011, 19:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2011, 19:00
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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