Люди добрые обьсните как сделать суммму из элементов комбинаторики это связано с факториалами,
Боьснить не могу эту формулу вообщем надо написать формулу которая бы вичисляла сумму
т.е. 2деленная на 3 умноженная на йота(ийота всегда всегда увеличивается на 1 единицу при сумме) и умноженная на факториал.
Пример
2(вот эту двойку пользователь вводит сам, может вместо двойки написать хоть 100)делим на 3 умноженая на йота факториал + 2(вот эту двойку пользователь вводит сам, может вместо двойки написать хоть 100)делим на 3 умноженая на 2йота(сверху обьснил что при каждой сумме увеличивается на единицу)факториал
Вот такую программу нужно написать в Турбо Паскале , Обьсните или напишите код проги
В заранее благодарен Щеколдин.А.А
Айра
5.01.2008 0:31
Чему равно йота изначально? До скольки ее можно увеличивать? или тут идет еще и вычисление с заданной точностью?
p.s. а ты можешь написать формулу в word'e и вставить скриншот?
dron4ik
5.01.2008 0:32
сколько пользователь раз задаст стока йота будет увеличиватся начальная йота равна 1
Client
5.01.2008 0:36
Само задание и формулу ТОЧНО можешь написать??
dron4ik
5.01.2008 0:37
нет я бы всатил скриншот но не знаю как
dron4ik
5.01.2008 1:32
посмотрите пожалуйста
Айра
5.01.2008 1:37
Так ради интереса)) а у тебя какие-нибудь мысли есть? например по факториалу?
dron4ik
5.01.2008 1:40
Признаюсь, я даже незнаю с чего начать препод не учит не фига....(предпоследняя лаба мне б её сдать)...
Добавлено через 4 мин. по факториалу знаю как с ними обращаться
фак1=1 фак2=1ум2=2 фак3=1ум2ум3ум=6
volvo
5.01.2008 1:45
Оля, по факториалу мысли здесь только лишние: вычислять факториал на каждом шаге для этой задачи - то еще извращение, достаточно просто держать в переменной текущий член последовательности и на каждой итерации делить его на порядковый номер итерации...
Можно еще поискать по форуму на тему вычисления суммы ряда, было много подобных задач...
Айра
5.01.2008 1:47
Цитата
я даже незнаю с чего начать
Ну например с того, что такое факториал, точнее как его найти)) Вот, например, тебе известен 2!, тогда 3!=2!*3 А если применить это к нашей йоте?
dron4ik
5.01.2008 1:48
volvo напиши код пожалуйста(хочу научится)
Айра
5.01.2008 1:54
В принципе все так, как и сказал volvo...
var n,s,slag: extended;
yota,maxYota: integer;
begin
write('n= ');
readln(n);
write('макс йота= ');
readln(maxYota);
slag:=n/3; //изначальное значение слагаемого (при х=1)
s:=slag;
for yota:=2to maxYota do// тут у нас меняет значение йоты (в данном случае х)
begin
slag:=slag/yota; //вычисляется следующее слагаемое (доделиваем на x);
s:=s+slag;
writeln(slag:6:4); //для наглядности смотрим на промежуточные slagаемые))
end;
writeln(s:14:12);
end.
Попробуй научиться, спрашивай, если что..
добавлено: я кое-что изменила, так правильнее.. Можешь сказать что именно непонятно?))
dron4ik
5.01.2008 1:58
СПАСИБО ТЕБЕ БОЛЬШОЕ!!!!!! ( а можешь обьснить как вообще она работает?)
Добавлено через 19 мин. Оля а ты уверена что прога работает меня смущает что в скобках написано МАКС и пустота.
Айра
5.01.2008 2:20
Цитата
Оля а ты уверена что прога работает
..а что должен делать следующий после write('макс х= '); оператор?
dron4ik
5.01.2008 2:24
я если чесно незнаю я щас пробую запустить на паскале
Добавлено через 4 мин. значение не пральное выдает ввожу я 1рку потом факториал прога просто делит введенную однерку на факториал хотя должна быть задействована 3-ка которая умножается на факториал если приписать команду чтоб было умножение 3-ки на фак то будет отлично
volvo
5.01.2008 2:35
Цитата
значение не пральное выдает
Ты сначала правильные данные задай, потом будешь говорить, что программа выдает: сначала вводится X, потом - N. Про "факториал" вообще речи нет, зачем (и, главное, КАК) ты его вводишь - я не знаю...
(To Айра: вот видишь, что происходит, когда даешь несоответствующие имена переменным?)
dron4ik
5.01.2008 2:38
факториал это не просто факториал вот фак из четырех=24 а мы в коде просто используем как обычное число так нельзя а как можно я незнаю просто фак как то надо расписать
Айра
5.01.2008 2:41
Цитата
ввожу я 1рку потом факториал
1 - это значение n "факториал" - там должно быть то число, до которого увеличивается x ..добавь в цикле writeln(slag:6:4); и посмотри чему равны промежуточные слагаемые.. я чет не пойму, что неправильно..
volvo
5.01.2008 2:43
Цитата
так нельзя
Ясно... Значит, в алгоритме не разобрался... Смотри: если у меня N = 4, и на первой итерации я поделю число на 1, на второй - полученное частное на 2, на третьей - все это на 3, и на четвертой - на 4, то это не будет аналогично тому же самому, что я сделаю сразу X / (1*2*3*4) ? Как ты думаешь? А то, что я написал - это не факториал, часом?
Алгоритм изучай, потом расскажешь, что правильно, а что - нет... А просто так, не увидев значка "!" говорить, что это неверно - не надо...
dron4ik
5.01.2008 2:44
я тоже не пойму куда это добавить врителн
Айра
5.01.2008 2:45
Цитата
так нельзя
Почему так нельзя? всмысле препод запретил или ты считаешь, что так не правильно?
dron4ik
5.01.2008 2:46
Прости volvo, в программировании нас не учат а по МАТАНУ я уж точно зная
Добавлено через 1 мин. Оля думаю нельзя но хотя может можно
Айра
5.01.2008 2:53
Цитата
Оля думаю нельзя но хотя может можно
Ну когда мы проходили вычисления с заданной точностью (там тоже были факториалы) это было не можно, а нужно))
to volvo: >>вот видишь, что происходит, когда даешь несоответствующие имена переменным? да.. надо работать над собой))
p.s. к администрации: а нельзя сделать что-то типа "во время создания вами ответа в теме появились новые сообщения"? а то "некрасиво" порой получается..
dron4ik
5.01.2008 2:55
мы такое вроде не проходили вычисления с заданной точностью
Айра
5.01.2008 3:15
Цитата
мы такое вроде не проходили вычисления с заданной точностью
..да дело не в точности, а в вычислении факториала.. Просто нецелесообразно (о, какое слово)) заново считать факториал на каждом шаге цикла, поэтому люди, наверно, и додумались до описанного volvo алгоритма.. У тебя есть какие-то ограничения на алгоритм решения этой задачи? если нет, то разбирай этот алгоритм, задавай конкретные вопросы, попытаемся объяснить))
dron4ik
5.01.2008 3:18
я понял как факториал должен работать . пользователь вводит какую нибудь цифру это цифра делится на 3 и умножается на фак( а фак зависит от количества ввода цифры которая делится, так в задаче должна быть сумма этих формул)
Добавлено через 7 мин. в коде должна присутствовать сумма этих полученных результатов дроби по рисунку
Айра
5.01.2008 3:41
..что и происходит в программе.. смотри:
slag:=n/3; //первое слагаемое у нас равно n(введенное пользователем число, пусть оно = 2)/(3*1)=0.66667, мы его считаем до цикла
s:=slag; // соответственно сумма уже равна первому слагаемому
for yota:=2to maxYota do//тут у нас меняет значение йоты до ее максимума (который ввел пользователь)
//поскольку мы уже посчитали слагаемое при йота=1, то цикл можно начать сразу с 2-ки}
begin
slag:=slag/yota; //вычисляем следующее слагаемое (доделиваем на йоту).. по идее оно
//равно 2/(3*2*1)=0.3333 <- тут мы считали все заново, а если просто поделить
//значение 1-го слагаемого на йоту, то получим тоже самое: 0.6667/2=0.3333..
//Следующее слагаемое (при следующей итерации цикла) тогда будет 0.33333/3=0.11111
//Проверяем на калькуляторе: 2:(3*3!)=2:(3*3*2*1)=0.11111111 -> совпало!
}
s:=s+slag; //добавляем полученное слагаемое к сумме
writeln(slag:6:4); //для наглядности смотрим на промежуточные slagаемые))
end;
writeln(s:14:12);
Вроде все соответствует заданию и считается правильно.. что не так?
volvo
5.01.2008 3:49
Цитата
я понял как факториал должен работать .
А теперь пойми, что делает программа (пост №12 - обозначения переменных сохранены):