Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ помогите с алгоритмом ( в паскале)

Автор: pirozho4ek 18.05.2007 8:08

надо вычислить выражение:
при J:= от 2 до N (N>2) ------ это условие подразумевает что в проге вводится значение N, и перебирая поочереди значения от 2 до N вычисляется значение J^J при каждом значение J... а потом суммировать надо...
но мне надо узнать алгоритм самого вычесления выражения J^J
что б мог считать при любом значение >2
J^J:=?

помогите кто может с алгоритмом dry.gif

P.S. заранее благодарен=)

Автор: Lapp 18.05.2007 8:38

Цитата(pirozho4ek @ 18.05.2007 5:08) *

при J:=2..N (N>2)
J^J:=?

Не совсем понятно: тебе нужны все такие степени J^J при J от 2 до N ?
Или просто алгоритм вычисления J^J ?

И еще один вопрос: о каких реально числах идет речь? От этого очень многое зависит. Степень растет очень быстро, нужно определиться с диапазонм и с точностью, которую ты хочешь получить. Если ты будешь работать с целыми числами, то, возможно, захочешь абсолютную точность, до последнего знака. Но осуществить это удастся только для не очень больших чисел.. Если работать с действительными типами, то диапазон можно существенно расширить, но точность будет не абсолютная.
Алгоритм для целых и действительных тоже может быть разным. Для целых можно использовать простое умножение в цикле, а для действительных можно действовать через логарифм..
Уточни все это, плз.

Автор: pirozho4ek 18.05.2007 9:30

Прикрепленное изображение ЭТО ПОЛНОСТЬЮ ВЫРАЖЕНИЕ КОТОРОЕ МНЕ НАДО РЕШИТЬ В ПАСКАЛЕ.
Я НАПИСАЛ АЛГАРИТМ ДЛЯ НАХОЖДЕНИЯ И СУММИРОВАНИЯ ФАКТОРИАЛА,
А С j^j проблемка.

у переменых J,N тип integer
так вот... алгоритм нахождения J^J конкретно для этого примера мне нужен...
кто может помогите.... хотя б намекните в какую степь глядеть=)

Автор: samec 18.05.2007 10:51

Цитата(pirozho4ek @ 18.05.2007 9:30) *

А С j^j проблемка.

А вчём проблема то?
вот код, возводит x в степень y.... только вот степень не должна превышать 32768, коль у тебя integer используется...

program step;
var
result,x,y,i:integer;
begin
readln(x);
readln(y);
result:=1;
for i:=1 to y do
result:=result*x;
writeln(result);
readln;
end.


Автор: pirozho4ek 18.05.2007 11:37

парни соедините эти две проги так чтоб она высчитывала выражение Прикрепленное изображение


для фактариала
fac1,sum1:real;
j,i:integer;
begin
writeln('j');
readln(j);
sum1:=1;
for i:=0 to (j-1) do
begin
fac1:=(j-i)*1;
sum1:=sum1*fac1;
end;
writeln(sum1);
end.

для J^J
var
i, j, p : integer;
begin
j:=7;
p:=1;
begin
for i:=0 to j-1 do
begin
p:=p*j;
end;
writeln(p);
end;
end.
уменя ответы четто не сходятся с реальными вычислениями, попробуйте мож у вас получится=)

Автор: pirozho4ek 18.05.2007 13:24

blink.gif через 1.5 часа мне сдавать ну хоть кто-нить ПОМАГИТЕ!!!!!
ПЛИЗ......... Я БУДУ ОЧЕНЬ БЛАГОДАРЕН И НЕ ЗАБУДУ ДОБРОТЫ ...

Автор: мисс_граффити 18.05.2007 13:40

Ты бы хоть правила прочитал.
Они написаны в верхней части страницы.
Если не будет исправлено - закрою тему.

Цитата
уменя ответы четто не сходятся с реальными вычислениями

а где у тебя ОТВЕТЫ? я вижу только две отдельные подпрограммы.

Автор: klem4 18.05.2007 13:49

М
Пользуйся тегами.



var
i, j, k, n, T, P: LongInt;
S: Single;
begin
write('n = '); readln(n);

T := 2;
s := 0;

for j := 2 to n do begin
T := T * (j + 1);
P := 1;
for k := 1 to j do P := P * j;
S := S + T / (T + P);
end;

writeln(s:5:2);
end.