Помощь - Поиск - Пользователи - Календарь
Полная версия: Как записать формулу кодом > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
SnooP↑
Доброго времени суток добрые люди, помогите пожалуйста. Как записать вот эту формулу Изображение Меня тут смущают восклицательные знаки. Это булевы знаки или нет, просто мне говорили что к булевой логике это отношения не имеет.
tig81
Нет, это факториалы.
Dimka
n!=1*2*3*4*5*6*....*n
Harch
Вы поняли? Можете написать функцию вычисления факториала?
RaDS
На Паскале вычисление факториала выглядит так:
Код

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↑
Цитата(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
Могу написать как это сделать на С++
SnooP↑
Цитата(Harch @ 5.12.2010, 11:31) *

Могу написать как это сделать на С++

Если вам не сложно, буду очень благодарен.
Harch
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;
}


вы вводите с клавиатуры число, и он выводит его факториал.
граф Монте-Кристо
i два раза объявлено только.
Harch
опа, точно, спасибо smile.gif не заметил smile.gif
P.S. компилировать не пробовал smile.gif
Красным выделил что надо убрать в коде.
Цитата

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↑
Harch спасибо, но 2 раза обьявленный индификатор, на мой взгляд портит только вид, не влияя на работоспособность маленькой программы. Только видимо мне немного не подойдёт данная схема. Для моего задания нужно, чтобы факториалы увеличивались сами, от 0,до того как точность суммы ряда не будет равна 0.0001.

Вот текст задачи,


Найти сумму ряда с точностью =10-4, общий член которого
(при определении суммы членов ряда следует использовать рекуррентную формулу для
получения следующего члена ряда, выводимую из отношения an+1/an ;считать, что точность
достигнута, если аn < ); n=0,1,2….
Составьте блок-схему алгоритма


Вы не могли бы мне словестно обьяснить, как сделать данную задачу?
Harch
Цитата
Harch спасибо, но 2 раза обьявленный индификатор, на мой взгляд портит только вид, не влияя на работоспособность маленькой программы.

Программа не откомпилируется.
Так, а при чем здесь факториал? smile.gif
SnooP↑
у меня откомпилировалась с ошибкой.. ну по формуле представленой выше, нужно находить факториалы, как я понял.
Harch
Так, вообще то откмпилировалась с ошибкой не бывает smile.gif) он exe файл не создал значит все, не откомпилировалась.
а зачем Вам факториал?
SnooP↑
ну а как сделать без этого? Ведь на картинке, для решения, нужно факториал находить.
граф Монте-Кристо
Ну и сделайте отдельную функцию, которая принимает число и считает от него факториал. В чём проблема?
SnooP↑
Нужно что-то на подобии этого?

#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
Вообщем так. Вам надо посчитать то что на картинке? С помощью программы?
Если так, то давайте я Вам просто ее напишу. Акция (единичная), так сказать wink.gif
SnooP↑
не просто посчитать, а найти сумму ряда, по этой картинке.
граф Монте-Кристо
Код

#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
Вроде верно.
Граф Монте-Кристо, вместо цикла while тут удобнее был бы цикл for smile.gif Но это так, вопросы красоты кода и т. д.
SnooP↑
Цитата(граф Монте-Кристо @ 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
Вам понятие Цикл знакомо?
Harch
Да там все верно, он находит все члены до заданной точности.
Julia
2Narch: Цикл For в данной задаче использовать не рационально. Периодически мне вообще не понятны ваши комментарии в темах раздела Программирование. Если таким образом набираете количество сообщений, то делайте это где-нибудь в другом месте.
Harch
Не вижу почему не рационально? Происходит увеличение i, проще сделать это не в теле цикла. Я не набираю количества сообщений. А по программированию экзамен автоматом две недели уже как получил, так что наверно не совсем ничего не понимаю в нем.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.