Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2013, 03:11   #1
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию Работа с циклом

Задание:
Решение:
Код:
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "rus");
int i, n;
double x, p=1;
scanf("%d", &n);
for(i=0;i<=n;i++)
{
p=p*((2*i)/(2*i+1));
x=x+p;
}
printf("%lf", x);
}
Почему ноль выводит?
East Undia Trading вне форума Ответить с цитированием
Старый 12.12.2013, 03:20   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

1) Что-то непохожа на правду формула
2) for (i = 1; ...
p *= 2.0 * i / (2 * i + 1));
Это только исправит нулевой результат, но не даст верный ответ
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 12.12.2013, 03:20   #3
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Код:
for(i=0;i<=n;i++)
Smogg вне форума Ответить с цитированием
Старый 12.12.2013, 03:25   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

Код:
double x = 1;
for (int i = 0; i < n; ++i)
    x *= 1.0 * (2 * (i / 2) + 2) / (2 * ((i + 1) / 2) + 1);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 12.12.2013, 03:25   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

- х не инициализирован. Обычно компилятор таким присваивает 0
- цикл начинается с i=0, от этого в первом же цикле p=0, и далее всегда, ибо p=p* ... и т.д.
В результате получается 0+0*.. +0*
И вообще, написано ..из сомножителей , а в программе - сложение x+p.
type_Oleg вне форума Ответить с цитированием
Старый 12.12.2013, 03:42   #6
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Всем спасибо.
BDA, программирование все на формулах, а я такое сходу не решил, хотя это не мое задание.Надо научиться вот так быстро делать, что-нибудь можете посоветовать?
Цитата:
x *= 1.0 * (2 * (i / 2) + 2) / (2 * ((i + 1) / 2) + 1);
East Undia Trading вне форума Ответить с цитированием
Старый 12.12.2013, 16:38   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

Не знаю, просто тренироваться. Например, в данном случае можно посмотреть на числители и знаменатели отдельно и заметить, что они четные и нечетные соответственно и повторяются по два раза. Осталось только придумать зависимость.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с циклом. ParadoxX27 C++ Builder 15 01.02.2012 10:57
Работа с циклом. glebast Помощь студентам 1 20.01.2012 16:41
работа с циклом alekstav Общие вопросы Delphi 1 31.12.2010 09:18
Задача в паскале. Работа с циклом while do. Йохан Шмидт Помощь студентам 12 28.07.2010 10:43
Работа с циклом в StringGrid-e artemavd Общие вопросы Delphi 2 20.07.2009 22:27