Люди добрые обьсните как сделать суммму из элементов комбинаторики это связано с факториалами,
Боьснить не могу эту формулу вообщем надо написать формулу которая бы вичисляла сумму
т.е. 2деленная на 3 умноженная на йота(ийота всегда всегда увеличивается на 1 единицу при сумме) и умноженная на факториал.
Пример
2(вот эту двойку пользователь вводит сам, может вместо двойки написать хоть 100)делим на 3 умноженая на йота факториал + 2(вот эту двойку пользователь вводит сам, может вместо двойки написать хоть 100)делим на 3 умноженая на 2йота(сверху обьснил что при каждой сумме увеличивается на единицу)факториал
Вот такую программу нужно написать в Турбо Паскале , Обьсните или напишите код проги
В заранее благодарен Щеколдин.А.А
Чему равно йота изначально? До скольки ее можно увеличивать? или тут идет еще и вычисление с заданной точностью?
p.s. а ты можешь написать формулу в word'e и вставить скриншот?
сколько пользователь раз задаст стока йота будет увеличиватся начальная йота равна 1
Само задание и формулу ТОЧНО можешь написать??
нет я бы всатил скриншот но не знаю как
Так ради интереса)) а у тебя какие-нибудь мысли есть? например по факториалу?
Признаюсь, я даже незнаю с чего начать препод не учит не фига....(предпоследняя лаба мне б её сдать)...
Добавлено через 4 мин.
по факториалу знаю как с ними обращаться
фак1=1 фак2=1ум2=2 фак3=1ум2ум3ум=6
Оля, по факториалу мысли здесь только лишние: вычислять факториал на каждом шаге для этой задачи - то еще извращение, достаточно просто держать в переменной текущий член последовательности и на каждой итерации делить его на порядковый номер итерации...
Можно еще поискать по форуму на тему вычисления суммы ряда, было много подобных задач...
volvo напиши код пожалуйста(хочу научится)
В принципе все так, как и сказал 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:=2 to maxYota do // тут у нас меняет значение йоты (в данном случае х)
begin
slag:=slag/yota; //вычисляется следующее слагаемое (доделиваем на x);
s:=s+slag;
writeln(slag:6:4); //для наглядности смотрим на промежуточные slagаемые))
end;
writeln(s:14:12);
end.
СПАСИБО ТЕБЕ БОЛЬШОЕ!!!!!! ( а можешь обьснить как вообще она работает?)
Добавлено через 19 мин.
Оля а ты уверена что прога работает меня смущает что в скобках написано МАКС и пустота.
я если чесно незнаю я щас пробую запустить на паскале
Добавлено через 4 мин.
значение не пральное выдает ввожу я 1рку потом факториал прога просто делит введенную однерку на факториал хотя должна быть задействована 3-ка которая умножается на факториал если приписать команду чтоб было умножение 3-ки на фак то будет отлично
факториал это не просто факториал вот фак из четырех=24 а мы в коде просто используем как обычное число
так нельзя а как можно я незнаю просто фак как то надо расписать
я тоже не пойму куда это добавить врителн
Прости volvo, в программировании нас не учат а по МАТАНУ я уж точно зная
Добавлено через 1 мин.
Оля думаю нельзя но хотя может можно
мы такое вроде не проходили вычисления с заданной точностью
я понял как факториал должен работать .
пользователь вводит какую нибудь цифру это цифра делится на 3 и умножается на фак( а фак зависит от количества ввода цифры которая делится, так в задаче должна быть сумма этих формул)
Добавлено через 7 мин.
в коде должна присутствовать сумма этих полученных результатов дроби по рисунку
Эскизы прикрепленных изображений
..что и происходит в программе.. смотри:
slag:=n/3; //первое слагаемое у нас равно n(введенное пользователем число, пусть оно = 2)/(3*1)=0.66667, мы его считаем до цикла
s:=slag; // соответственно сумма уже равна первому слагаемому
for yota:=2 to 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.
Блин я даже незнал что есть такие добрые люди(но это уже следующая тема в другом разделе)!!!
Кстати а мне так стало интересно, это у вас хобби?(программировать)
[offtop]