PDA

Показать полную графическую версию : Задача на цикл.


Hardcore
26-09-2010, 19:55
Я как бы понял как решать эту задачу но у меня тут где что то не так.
Подскажите.
Задача такая.

x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-x^11/11!+x^13/13!

input 1.
output 0.841471. (Это ответ правильный)

Я решил это так.

#include <iostream>
using namespace std;
int main () {
double x;
cin>>x;
double n;
double c=1,b,d=1,s1,s;
for (int i=3; i<=11; i+=4)
{
b=pow(x,i);
c=+b;
}
{
for (n=3; n<=11; n+=4)
d*=n;
}
s1=c/d;
double y,z=1,k=1,s2;
for (int i=5; i<=13; i+=4)
{
y=pow(x,i);
z=+y;
}
{
for (n=5; n<=13; n+=4)
k*=n;
}
s2=z/k;
s=s1-s2;
cout<<s<<endl;
return 0;
}

когда я ввожу 1

выходит 0.0026196 (а это мой)

можете помочь?

Hector
26-09-2010, 20:01
Для начала тег CODE + комментарии, а также вменяемое условие задачи (что с этим выражением надо делать?)

Hardcore
26-09-2010, 20:16
Задача x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-x^11/11!+x^13/13!

Надо его решить через оператор while или for. короче через цикл.

Условие такое. надо ввести 1-ку и получить ответ output 0.841471

А когда я ввожу 1-ку у меня выходит 0.0026196.

Hector
26-09-2010, 22:45
а зачем здесь цикл, если просто нужно посчитать выражение, или я чего-то не понял?

lxa85
27-09-2010, 00:23
Hector, видимо для получения значений степеней, факториалов и последовательной расстановки знаков +/-
можете помочь? »
Расставь комментарии, оформи тегом code и используй трассировщик.
for (int i=3; i<=11; i+=4)
{
b=pow(x,i);
c=+b;
}
{
for (n=3; n<=11; n+=4)
d*=n;
}
s1=c/d
»
Тебе не кажется что это чушь?
Ну ка сложи 2 дроби 1/3! + 1/5! и посмотри, что у тебя в коде.
2. for (n=3; n<=11; n+=4)
d*=n;
} - это цикл получения факториала???
Ссылка на википедию с определением факториала нужна?

Во вторых двух циклах все тоже самое. n'ый раз тебе говорю - не пиши код сразу, реши 2,3,5 устных примера, найди повторяющиеся операции, посмотри как они выполняются.
И только потом пиши код, а не сочиняй его на ходу.
Ну или скажу проще.
Где анализ задачи и где блок схема алгоритма?

Hardcore
27-09-2010, 16:42
Ты говоришь как мой препод. Всё очень смутно. Можешь просто укозать типа здесь ошибка и дать совет?)

lxa85
27-09-2010, 18:00
ы говоришь как мой препод. »
Открою тебе тайну, я тоже препод.
Можешь просто указать типа здесь ошибка и дать совет?) »
Я тебе сказал, в каждой паре циклов - ошибка. Факториал считается не верно, дроби вычисляются тоже не верно.
Я даже сказал что тебе сделать, чтобы найти ошибку и избежать ее повтора.
Ты не ответил не на один мой вопрос (а их не менее 3х штук).
Пока ты не найдешь свою ошибку сам, от исправленного (а в данном случае переписанного с нуля, т.к. правильного здесь только блок объявления переменных var) кода проку ноль.
Ты учишься, ошибки это нормально. Так и ищи их сам. Все что для этого необходимо у тебя есть.

P.S. Лень - это не отмазка :)




© OSzone.net 2001-2012