SnooP↑
Сообщение
#65460 21.11.2010, 19:30
Доброго времени суток добрые люди, помогите пожалуйста. Как записать вот эту формулу

Меня тут смущают восклицательные знаки. Это булевы знаки или нет, просто мне говорили что к булевой логике это отношения не имеет.
tig81
Сообщение
#65461 21.11.2010, 19:47
Нет, это факториалы.
Dimka
Сообщение
#65463 21.11.2010, 20:59
n!=1*2*3*4*5*6*....*n
Harch
Сообщение
#65555 23.11.2010, 14:06
Вы поняли? Можете написать функцию вычисления факториала?
RaDS
Сообщение
#65979 30.11.2010, 16:36
На Паскале вычисление факториала выглядит так:
Код
var n:integer;
var a:double;
function Factor(n:integer):real; //вычисляем сам факториал по числу n
var v:real;
Begin
if n in [0,1] then
Factor:= 1 else
Factor:= n*Factor(n-1);
end;
begin
Write('Введите число n: ');
Readln(n);
a:=(pow(3,n)*Factor(n))/Factor(3*n); // необходимая нам часть, ваша формула
Write('а = ', a:5:3);
Readln;
End.
В работоспособности задачи не уверен) Давно не программировал.
SnooP↑
Сообщение
#66218 5.12.2010, 9:03
Цитата(RaDS @ 30.11.2010, 18:36)

На Паскале вычисление факториала выглядит так:
Код
var n:integer;
var a:[color=#FF0000]real[/color];
function Factor(n:integer):real; //вычисляем сам факториал по числу n
var v:real;
Begin
if n in [0,1] then
Factor:= 1 else
Factor:= n*Factor(n-1);
end;
begin
Write('Введите число n: ');
Readln(n);
a:=([color=#FF0000]power[/color](3,n)*Factor(n))/Factor(3*n); // необходимая нам часть, ваша формула
Write('а = ', a:5:3);
Readln;
End.
В работоспособности задачи не уверен) Давно не программировал.
если чесно, ваша задача не совсем работает, буду разбираться, спасибо.
Harch
Сообщение
#66222 5.12.2010, 9:31
Могу написать как это сделать на С++
SnooP↑
Сообщение
#66264 5.12.2010, 14:40
Цитата(Harch @ 5.12.2010, 11:31)

Могу написать как это сделать на С++
Если вам не сложно, буду очень благодарен.
Harch
Сообщение
#66424 7.12.2010, 11:44
SnooP, вот:
#include <iostream>
using namespace std;
int main()
{
int i, n, p = 1;
cin>>n;
for(int i = 1; i <= n; i++) p = p * i;
cout<<p<<endl;
return 0;
}
вы вводите с клавиатуры число, и он выводит его факториал.
граф Монте-Кристо
Сообщение
#66482 7.12.2010, 17:06
i два раза объявлено только.
Harch
Сообщение
#66540 8.12.2010, 11:51
опа, точно, спасибо

не заметил

P.S. компилировать не пробовал

Красным выделил что надо убрать в коде.
Цитата
SnooP, вот:
#include <iostream>
using namespace std;
int main()
{
int i, n, p = 1;
cin>>n;
for(int i = 1; i <= n; i++) p = p * i;
cout<<p<<endl;
return 0;
}
вы вводите с клавиатуры число, и он выводит его факториал.
SnooP↑
Сообщение
#66636 9.12.2010, 15:21
Harch спасибо, но 2 раза обьявленный индификатор, на мой взгляд портит только вид, не влияя на работоспособность маленькой программы. Только видимо мне немного не подойдёт данная схема. Для моего задания нужно, чтобы факториалы увеличивались сами, от 0,до того как точность суммы ряда не будет равна 0.0001.
Вот текст задачи,
Найти сумму ряда с точностью =10-4, общий член которого
(при определении суммы членов ряда следует использовать рекуррентную формулу для
получения следующего члена ряда, выводимую из отношения an+1/an ;считать, что точность
достигнута, если аn < ); n=0,1,2….
Составьте блок-схему алгоритма
Вы не могли бы мне словестно обьяснить, как сделать данную задачу?
Harch
Сообщение
#66643 9.12.2010, 15:53
Цитата
Harch спасибо, но 2 раза обьявленный индификатор, на мой взгляд портит только вид, не влияя на работоспособность маленькой программы.
Программа не откомпилируется.
Так, а при чем здесь факториал?
SnooP↑
Сообщение
#66657 9.12.2010, 17:19
у меня откомпилировалась с ошибкой.. ну по формуле представленой выше, нужно находить факториалы, как я понял.
Harch
Сообщение
#66659 9.12.2010, 17:22
Так, вообще то откмпилировалась с ошибкой не бывает

) он exe файл не создал значит все, не откомпилировалась.
а зачем Вам факториал?
SnooP↑
Сообщение
#66698 9.12.2010, 20:01
ну а как сделать без этого? Ведь на картинке, для решения, нужно факториал находить.
граф Монте-Кристо
Сообщение
#66700 9.12.2010, 20:03
Ну и сделайте отдельную функцию, которая принимает число и считает от него факториал. В чём проблема?
SnooP↑
Сообщение
#66701 9.12.2010, 20:19
Нужно что-то на подобии этого?
#include <iostream>
using namespace std;
int main()
{
int n,p = 1;
for (n = 0;n<100;n++);
for(int i = 1; i <= n; i++) p = p * i;
cout<<p<<endl;
return 0;
}
Я просто прошу обьяснить мне писменно, порядок действий, которые нужно совершить, просто не знаю с чего начать.
Harch
Сообщение
#66720 10.12.2010, 13:27
Вообщем так. Вам надо посчитать то что на картинке? С помощью программы?
Если так, то давайте я Вам просто ее напишу. Акция (единичная), так сказать
SnooP↑
Сообщение
#66728 10.12.2010, 16:04
не просто посчитать, а найти сумму ряда, по этой картинке.
граф Монте-Кристо
Сообщение
#66730 10.12.2010, 17:46
Код
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
double s=0,xn=1;
double eps=0.0001; //точность суммы
int i=0;
while(xn>=eps)
{
s+=xn;
xn*=3*(i+1)/((3*i+1)*(3*i+2)*(3*i+3));
i++;
}
cout<<"s="<<s;
system("pause");
return 0;
}
Что-то вроде этого может быть.
Harch
Сообщение
#66756 11.12.2010, 8:05
Вроде верно.
Граф Монте-Кристо, вместо цикла while тут удобнее был бы цикл for

Но это так, вопросы красоты кода и т. д.
SnooP↑
Сообщение
#66778 11.12.2010, 14:52
Цитата(граф Монте-Кристо @ 10.12.2010, 19:46)

Код
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
double s=0,xn=1;
double eps=0.0001; //точность суммы
int i=0;
while(xn>=eps)
{
s+=xn;
xn*=3*(i+1)/((3*i+1)*(3*i+2)*(3*i+3));
i++;
}
cout<<"s="<<s;
system("pause");
return 0;
}
Что-то вроде этого может быть.
Спасибо огромное, но ещё один вопрос, куда всунуть нахождение следующего члена ряда? он ведь, как я понимаю находит только один член ряда, а у меня в задаче написано, чтобы он нашёл все члены ряда и для нахождения следующего члена, дана формула an+1/an или я просто что-то недопонимаю?
Julia
Сообщение
#66849 12.12.2010, 16:34
Вам понятие Цикл знакомо?
Harch
Сообщение
#66890 13.12.2010, 13:09
Да там все верно, он находит все члены до заданной точности.
Julia
Сообщение
#66929 14.12.2010, 9:40
2Narch: Цикл For в данной задаче использовать не рационально. Периодически мне вообще не понятны ваши комментарии в темах раздела Программирование. Если таким образом набираете количество сообщений, то делайте это где-нибудь в другом месте.
Harch
Сообщение
#66933 14.12.2010, 10:14
Не вижу почему не рационально? Происходит увеличение i, проще сделать это не в теле цикла. Я не набираю количества сообщений. А по программированию экзамен автоматом две недели уже как получил, так что наверно не совсем ничего не понимаю в нем.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.