Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/48: Рейтинг темы: голосов - 48, средняя оценка - 4.77
заставил Бендера
854 / 319 / 17
Регистрация: 05.12.2010
Сообщений: 1,708
Записей в блоге: 6
1

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

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

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

Но после прочтения, все равно огромные трудности с алгоритмической частью. Курс программирования дался очень тяжко. Подскажите в каком направлении двигаться, литературу честно говоря читать уже в без толку, когда не могу придумать как найти наибольшую цифру в числе. Конечно можно набрать кучу доп.задач, пробовать решать что то с форума.. Как говорил мой преподаватель: "я в программировании был полный ноль, пока не встретил одну книгу которая и научила программировать" - ведь программирование это не знание языка, а способность находить рациональные решения.
Расскажите, что вам помогло сложить это самое рациональное решение.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2011, 01:53
Ответы с готовыми решениями:

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

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

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

Инкапсуляция. Поиск верного решения
Добрый вечер! Вот такая программка, почему здесь "d.name" отображается красным и пишется что...

79
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
06.08.2011, 01:59 2
практика, практика и еще раз практика, а оптимальность придет с опытом
решайте задачи на форуме, участвуйте в онлайн олимпиадах
2
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
06.08.2011, 02:01 3
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
не могу придумать как найти наибольшую цифру в числе
тут все просто:
в голову пришло пока 2 простых варианта:
1) Тупо использовать операции "/" и "%" и выделять по одной цифре, что сложнее чем второй способ в поиске максимального;
2) Этими же операциями загонять числа в массив, и далее просто сравнивать, пробегая по нему...
Так же можно вводить число, как строку, и повторять пункт 2

От прочтения кучи книг, умение разбивать задачи на подзадачи, снижая при этом риск запутаться в задаче, не появится... Все дело в практике, ее нужно как можно больше!
Решайте простейшие задачи сначала, только так научитесь думать...
1
заставил Бендера
854 / 319 / 17
Регистрация: 05.12.2010
Сообщений: 1,708
Записей в блоге: 6
06.08.2011, 02:05  [ТС] 4
Maxwe11, за двоих прошел вузовскую программу... (правда у нас один семестр.)
профита не замечено
Знания остались примерно на том же уровне. Но за мнение спасибо.

Добавлено через 1 минуту
Цитата Сообщение от Mиxaил Посмотреть сообщение
1) Тупо использовать операции "/" и "%" и выделять по одной цифре
так и сделал)
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
06.08.2011, 02:07 5
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
Maxwe11, за двоих прошел вузовскую программу... (правда у нас один семестр.)
профита не замечено
Знания остались примерно на том же уровне. Но за мнение спасибо.
Критический уровень, после которого количество переходит в качество, у каждого свой. Видимо порог очередной ступени ещё не достигнут
3
заставил Бендера
854 / 319 / 17
Регистрация: 05.12.2010
Сообщений: 1,708
Записей в блоге: 6
06.08.2011, 02:08  [ТС] 6
grizlik78, про критический уровень - спасибо) Видимо надо еще третьему лабы нарешать)
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
06.08.2011, 02:11 7
Раньше у меня был такой подход к программированию:
После прочтения нескольких страниц учебного материала, поняв весь смысл, изложенного автором, я садился программировать. Сначала переписывал листинги, изменял их, добавлял свое... хотел понять, как это работает... Затем переходил к новому материалу. И так постепенно я учусь... Вроде, ничего сложного!
0
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
06.08.2011, 02:15 8
Лучший ответ Сообщение было отмечено как решение

Решение

книги читать мало, нужно всегда совмещать это с практикой. если проблемы с решением задач глубже, то либо смириться с тем, что склад ума другой, либо больше заниматься. еще есть интересная книжка, хоть и далекая от программирования, посвященная процессу синтеза идей при решении задач - Дж. Пойя "Математическое открытие. Решение задач: основные понятия, изучение и преподавание"
3
заставил Бендера
854 / 319 / 17
Регистрация: 05.12.2010
Сообщений: 1,708
Записей в блоге: 6
06.08.2011, 02:55  [ТС] 9
Цитата Сообщение от Paporotnik Посмотреть сообщение
смириться с тем, что склад ума другой, либо больше заниматься
спасибо за мнение, попытка не пытка.

Добавлено через 29 минут
Цитата Сообщение от Mиxaил Посмотреть сообщение
1) Тупо использовать операции "/" и "%" и выделять по одной цифре, что сложнее чем второй способ в поиске максимального;
вот так можно

Не по теме:

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
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <clocale>
using namespace std;
 
int main(int argc, char *argv[])
{
    setlocale (LC_CTYPE, "rus");
int number;
cout << "Введите число: " << endl;
cin >> number;
cout << "Ответ: ";
int max = 0;
int buff;
while (number>0) 
{
  buff = number % 10;
  if (buff>max) max = buff;
  number = number / 10;
}
  cout << max << endl;  
  
    system("PAUSE");
    return EXIT_SUCCESS;
}

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
06.08.2011, 03:22 10
IIIa66uMEM6eP, математику учите. Будет легче с поиском решений. А синтаксис языка программирования выучить в принципе не сложно...
1
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
06.08.2011, 09:04 11
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
спасибо за мнение, попытка не пытка.

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

вот так можно

Не по теме:

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
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <clocale>
using namespace std;
 
int main(int argc, char *argv[])
{
    setlocale (LC_CTYPE, "rus");
int number;
cout << "Введите число: " << endl;
cin >> number;
cout << "Ответ: ";
int max = 0;
int buff;
while (number>0) 
{
  buff = number % 10;
  if (buff>max) max = buff;
  number = number / 10;
}
  cout << max << endl;  
  
    system("PAUSE");
    return EXIT_SUCCESS;
}

Ваш алгоритм подходит ТОЛЬКО для неотрицательных целых чисел. Ка вы думаете, почему?

Чтобы правильно работал ваш алгоритм, нужно после строки
cin >> number;
добавить строку
number = abs(number);
2
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
06.08.2011, 09:17 12
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
Крик души.

Но после прочтения, все равно огромные трудности с алгоритмической частью. Курс программирования дался очень тяжко. Подскажите в каком направлении двигаться, литературу честно говоря читать уже в без толку, когда не могу придумать как найти наибольшую цифру в числе. Конечно можно набрать кучу доп.задач, пробовать решать что то с форума.. Как говорил мой преподаватель: "я в программировании был полный ноль, пока не встретил одну книгу которая и научила программировать" - ведь программирование это не знание языка, а способность находить рациональные решения.
Расскажите, что вам помогло сложить это самое рациональное решение.
Применять алгоритмический подход в жизни. При необходимости принять решение по-любому более-менее важному поводу сесть и расписать на бумаге плюсы и минусы. И буквально выписать: если ... то... А если ... то...
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
06.08.2011, 09:30 13
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Применять алгоритмический подход в жизни. При необходимости принять решение по-любому более-менее важному поводу сесть и расписать на бумаге плюсы и минусы. И буквально выписать: если ... то... А если ... то...
Абсолютно верно. И не просто читать примеры в книгах, но и анализировать почему именно так, варьировать задачи, пытаться прокручивать их в голове, строить свои модели, искать свой стиль.

Добавлено через 9 минут
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
Крик души. Есть много замечательных книг по программированию, в них часто приводят стандартные алгоритмы. Переработал несколько из них
...
Но после прочтения, все равно огромные трудности с алгоритмической частью.
Что-то я сомневаюсь, что вот прям так взяли и переработали эти 3 книги. Если бы это было так, то ваша тема звучала бы более профессионально. Признайтесь, вы просто сидели и быстро на кнопку Page Down нажимали и колесико мышки быстро крутили. Вы даже первую (самую простую книжку) не читали, не смотрели задачки в ней.

И что значит "стандартные" алгоритмы. Это еще раз доказывает, что вы совсем эти книги не читали. Во 2 и 3 книгах ДАЛЕКО не стандартные алгоритмы. А уж про 3 книжку я совсем промолчу. Чтобы все там понять время нужно, она уже для более опытных программистов.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 11:47 14
Порешайте =)
Практика - лучший способ.

Добавлено через 2 минуты
Цитата Сообщение от Olga_ Посмотреть сообщение
Ваш алгоритм подходит ТОЛЬКО для неотрицательных целых чисел. Ка вы думаете, почему?

Чтобы правильно работал ваш алгоритм, нужно после строки
cin >> number;
добавить строку
number = abs(number);
А не проще ли немного изменить условие?
C++
1
while (number > 0)
на
C++
1
while (number)
И применять abs к цифрам.
Мало ли, вдруг исходное число еще понадобится.
1
заставил Бендера
854 / 319 / 17
Регистрация: 05.12.2010
Сообщений: 1,708
Записей в блоге: 6
06.08.2011, 11:53  [ТС] 15
Цитата Сообщение от Olga_ Посмотреть сообщение
Вы даже первую (самую простую книжку) не читали, не смотрели задачки в ней.
очень критично и не обосновано. хотя ваше мнение - думайте как хотите.
Цитата Сообщение от Olga_ Посмотреть сообщение
Во 2 и 3 книгах ДАЛЕКО не стандартные алгоритмы. А уж про 3 книжку я совсем промолчу. Чтобы все там понять время нужно, она уже для более опытных программистов.
1,2 успешно пройдены, далеко? ну ну. 3 я описал в посте - что не она увы не вся. Это не значит что я решил каждую задачу в книге - и я бы очень удивился увидев человека, который решал.

Добавлено через 1 минуту
diagon, отличный сайт) но большинство уже решал.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 11:56 16
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
diagon, отличный сайт) но большинство уже решал.
Их там 600 штук, большинство - это по крайней мере более 300 =)
А если более 300 задач там решить, то таких вопросов возникать не должно
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
06.08.2011, 12:04 17
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
diagon, отличный сайт) но большинство уже решал.
А там и второй раз решить не запрещается Нетривиальная задача имеет, как правило, более одного способа решения. Часто много более. Так что решать можно и уже решённые задачи, но подходя с другой стороны.
0
заставил Бендера
854 / 319 / 17
Регистрация: 05.12.2010
Сообщений: 1,708
Записей в блоге: 6
06.08.2011, 12:09  [ТС] 18
Цитата Сообщение от diagon Посмотреть сообщение
Их там 600 штук, большинство - это по крайней мере более 300
уговорили)) я первые штук 15 знакомых увидел)
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
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
Higher
1953 / 1219 / 120
Регистрация: 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
06.08.2011, 12:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2011, 12:25
Помогаю со студенческими работами здесь

Определить тип задачи и указать возможные алгоритмы решения
В общем, решение задачи НЕ ТРЕБУЕТСЯ, необходимо определить её тип и указать возможные алгоритмы...

Нет верного решения при определенном значении параметра
Добрый день. Стоит задача получить значения переменной x или лямбда из уравнения и доп. условия...

Поиск решения задачи в Excel
Помогите решить задачу...буду очень благодарен &quot;Рассчитать, какая сумма окажется на счете, если 40...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru