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

Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 5.00
Руслан555
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 79
25.09.2013, 09:44     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #1
Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6...; Помогите пожалуйста!!! Срочно нужен код программы)) Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2013, 09:44     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.;
Посмотрите здесь:

C++ Дано натуральное число N. Вычислить произведение первых N сомножителей
Дано натуральное число n.Вычислить произведение первых n сомножителей C++
Дано вещественное число а и натуральное число n. Вычислить а^1,a^2,a^3,..a^n. Операцию возведения в степень не использовать C++
Дано четырехзначное натуральное число А. Требуется определить что больше: число А или произведение его цифр? C++
Дано натуральное число n. Вычислить произведение первых n сомножителей 1/2 * 3/4 * 5/6 * ... C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
25.09.2013, 09:46     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #2

Не по теме:

Срочно его напишите и срочно его получите.



А что у Вас не получилось ?? Лень приключилась ?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
25.09.2013, 11:41     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #3
Цитата Сообщение от Руслан555 Посмотреть сообщение
Дано натуральное число n. Вычислить произведение первых n сомножителей
А если оно нечетное?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
25.09.2013, 11:51     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #4
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А если оно нечетное?
и что?
1/2*3/4*5/6
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
25.09.2013, 11:56     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #5
Цитата Сообщение от Croessmah Посмотреть сообщение
и что?
1/2*3/4*5/6
n == 6
Четное.
А при n == 7 что будет?
1/2*3/4*5/6*7/хз
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
25.09.2013, 11:58     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #6
C++
1
2
double M=1;
for(int i=1;i<=n;i++) M*=(2*i-1)/(2*i);
Добавлено через 1 минуту
для случая "1/2*3/4*5/6" n вообще-то равно 3. У кого-то сложности с пониманием задачи
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
25.09.2013, 12:10     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #7
Цитата Сообщение от SatanaXIII Посмотреть сообщение
n == 6
Четное.
А при n == 7 что будет?
Добавлю:
Здесь есть вырожденный случай - если n == 1. Что в этом случае делать, в задании не сказано....
А для n >= 2 функцию можно сильно упростить, и даже цикл тут не нужен :-)
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
25.09.2013, 12:12     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #8
Цитата Сообщение от Algoritmer Посмотреть сообщение
У кого-то сложности с пониманием задачи
Это я.

Не по теме:

CheshireCat,

Croessmah
25.09.2013, 12:15
  #9

Не по теме:

Цитата Сообщение от CheshireCat Посмотреть сообщение
Здесь есть вырожденный случай - если n == 1
1/2

CheshireCat
25.09.2013, 12:21
  #10

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


1/2

Ага, вот этот факт позволяет резко упростить функцию, начиная с n == 2 :-))

Croessmah
25.09.2013, 12:25
  #11

Не по теме:

Цитата Сообщение от CheshireCat Посмотреть сообщение
Ага, вот этот факт позволяет резко упростить функцию, начиная с n == 2 :-))
C++
1
2
if ( n == 1 )
   return 1.0/2.0 ;
не особо то и сложно

эхххх.... прогрессия )))

Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
25.09.2013, 12:31     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #12
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Это я.

Не по теме:

CheshireCat,

В задании сказано "первых n сомножителей", т.е. будет (n-1) знаков "*". Каждая дробь - это сомножитель. Числитель и знаменатель по отдельности сомножителями не являются.
При n=1: 1/2
При n=2: 1/2*3/4
При n=3: 1/2*3/4*5/6
В общем случае: 1/2*3/4*5/6*...*(2n-1)/2n

Добавлено через 3 минуты
Цитата Сообщение от CheshireCat Посмотреть сообщение
Добавлю:
Здесь есть вырожденный случай - если n == 1. Что в этом случае делать, в задании не сказано....
А для n >= 2 функцию можно сильно упростить, и даже цикл тут не нужен :-)
Очень интересно посмотреть, как это можно решить без цикла!!!
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
25.09.2013, 12:32     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #13
Цитата Сообщение от Algoritmer Посмотреть сообщение
Очень интересно посмотреть, как это можно решить без цикла!!!
математика же
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
25.09.2013, 12:36     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #14
Цитата Сообщение от Croessmah Посмотреть сообщение
математика же
Ну так покажи решение. Я понимаю, что числитель и знаменатель по отдельности представляют арифметические прогрессии. Но что-то формулу для произведения n-членов арифметич прогрессии я не встречал.
Сам подумай: Произв=а*(а+d)*(a+2d)...(a+(n-1)d)
При раскрытии скобок ничего хорошего не получается.
Байт
 Аватар для Байт
13964 / 8795 / 1223
Регистрация: 24.12.2010
Сообщений: 15,930
25.09.2013, 14:11     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #15
Вообще-то это (2n-1)!! / (2n)!!
C++
1
2
double p; int i;
for(i=1, p=1; i<=n; i++) p *=(double)(2*i -1)/(2*i);
Добавлено через 2 минуты
При n=0 тоже считается правильно (произведение нуля сомножителей равно 1, как сумма нуля слагаемых равна 0)

Не по теме:

Странно, что такая простенькая задачка вызвала столь бурную дискуссию

Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
25.09.2013, 14:19     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #16
Цитата Сообщение от Байт Посмотреть сообщение
Вообще-то это (2n-1)!! / (2n)!!
C++
1
2
double p; int i;
for(i=1, p=1; i<=n; i++) p *=(double)(2*i -1)/(2*i);
Добавлено через 2 минуты
При n=0 тоже считается правильно (произведение нуля сомножителей равно 1, как сумма нуля слагаемых равна 0)

Не по теме:

Странно, что такая простенькая задачка вызвала столь бурную дискуссию

Забыл про это: (2*i -1)/(2*i) = 0 и приведение его к (double) уже ничего не даст.
нужно так: (2*i -1)*1.0/(2*i)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2013, 16:16     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.;
Еще ссылки по теме:

Дано трехзначное натуральное число. Найти произведение его цифр C++
Дано натуральное n. Вычислить n сомножителей произведения 2/1*2/3*4/3*4/5*6/5*6/7 C++
C++ Вычислить произведение первых n сомножителей

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

Или воспользуйтесь поиском по форуму:
Байт
 Аватар для Байт
13964 / 8795 / 1223
Регистрация: 24.12.2010
Сообщений: 15,930
25.09.2013, 16:16     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; #17
Цитата Сообщение от Algoritmer Посмотреть сообщение
Забыл про это: (2*i -1)/(2*i) = 0 и приведение его к (double) уже ничего не даст.
нужно так: (2*i -1)*1.0/(2*i)
К double приводится (2*i-1). То, что вы имели в виду, записывается иначе
C++
1
(double)((2*i-1)/(2*i))
и безусловно, является ошибкой.
Цитата Сообщение от Algoritmer Посмотреть сообщение
нужно так: (2*i -1)*1.0/(2*i)
совершенно эквивалентно моему предложению. И даже на 2 символа короче

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

Не по теме:

Любопытно другое. Чему равен предел при n->бесконечности? Чую, что где-то около нуля.
Дошел только до (2n-1)!! / 2nn!
Ясно, что предел есть (монотонно убывает, ограничена снизу)
А вот как этот предел найти...

Yandex
Объявления
25.09.2013, 16:16     Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.;
Ответ Создать тему
Опции темы

Текущее время: 10:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru