![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 28.12.2012
Сообщений: 2
|
![]()
Начала самостоятельно изучать с++. Пока еще мои познания где-то в нулевом цикле. Хочу посмотреть на решенную задачу,чтобы понять правильно ли я двигаюсь. Спасибо заранее.
"Даны действительное число a и натуральное число n. Вычислить а(а-n)(a-2n)...(a-n2). 1. Проанализировать постановку задачи. 2. Обосновать используемые структуры данных и алгоритм решения задачи. 3. Написать и отладить программу для решения задачи." |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Цитата:
1) Входные данные: a (вещественное), n (целое неотрицательное). Дополнительные предположения: a представимо типом double, n^3 таково, что результат вычислений с требуемой точностью представим типом double. Выходные данные: вещественное число S типа double, такое, что, с требуемой точностью, a*(a+n)*...*(a+n^3) = S(a,n). Выделение вычислимой функции: R(a,n,p)=a*(a+n)*...*(a+p^2*n). S(a,n)=R(a,n,n). Далее, R(a,n,p) = a*(a+n)*...*(a+(p-1)^2*n)*(a+p^2*n) = R(a,n,p-1)*(a+p^2*n). R(a,n,0)=a. Следовательно, R вычислима. Следовательно, S вычислима. 2) R представима числом типа double. Рекурсивную запись R можно перевести в т.н. "хвостовую рекурсию": R'(a,n,0,acc)=acc, R'(a,n,p,acc)=R'(a,n,p-1,acc*(a+p*p*n)); R(a,n,p)=R'(a,n,p,1). Такое выражение впрямую переводится в цикл с предусловием: Код:
3) Код:
Также следует учесть опасность переполнения типа unsigned при перемножении. Для решения проблемы следует "силком" привести p к типу double при домножении acc Код:
Последний раз редактировалось Abstraction; 28.12.2012 в 14:27. |
|
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 28.12.2012
Сообщений: 2
|
![]()
Спасибо. Поняла одно: я еще совсем не продвинулась от нулевого уровня!
![]() |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Вообще, одна из лучших книжек по С++ для начинающих, существующих в природе - http://www.stroustrup.com/programming.html . Писалась автором языка как раз для людей, которые не программировали раньше.
Ну а все эти недоучебники "для вузов" можешь сразу выбросить. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 04.11.2012
Сообщений: 22
|
![]()
Посоветовал бы сначала изучить просто язык Си. Он и легче и уже после него будет хорошая основа для С++. Я лично, изучаю в данный момент Си ( ну и когда практикуюсь иногда прибегаю к функциям С++, ибо они бывают удобнее и легче для использования). Многие люди советовали мне сначала изучить Си. Поверьте, лишним уж точно не будет. Лучшей книгой считаю "Язык программирования С(ANSI C)" Б. Керниган, Д. Ритчи. http://books.tr200.ru/v.php?id=9563
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Да, я тоже всем советую начинать с C, и именно с книжки K&R. Но в этой теме задали конкретный вопрос - я на него конкретно отвечаю.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
решить задачу | Евгений 9 | Общие вопросы Delphi | 0 | 23.12.2011 09:33 |
Решить задачу | MrVamp | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 14.12.2011 01:29 |
РЕШИТЬ ЗАДАЧУ В С++ | колбаса | Помощь студентам | 0 | 23.11.2011 17:07 |
решить задачу на С++ | Лина_Чер | Помощь студентам | 7 | 16.06.2011 16:28 |