Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2013, 11:12   #1
Lena24
Новичок
Джуниор
 
Регистрация: 20.03.2013
Сообщений: 1
По умолчанию Описать функцию PowerA(x,a,eps)

Описать функцию PowerA(x,a,eps) вещественного типа (параметры x, a, eps – вещественные, |x| < 1, a > 0, eps > 0), находящую приближенное значение функции:



В сумме учитывать все слагаемые, большие по модулю eps. С помощью PowerA найти приближенное значение (1+x)a для данных x и a при шести различных значениях eps.

Вот я попытался, но он выдаёт одно и тоже каждый раз. Что я делаю не правильно?

Код:
program Project1;
 
{$APPTYPE CONSOLE}
 
uses 
math; 
CONST n=100; 
function chisl(a: integer; n:integer):integer; 
var 
i,res:integer; 
begin 
res:=1; 
 
for i:=a-n+1 to a do 
res:=res*i; 
 
chisl:=res; 
end; 
 
function faktorial(n: integer):integer; 
var 
i,res:integer; 
begin 
res:=1; 
 
for i:=2 to n do 
res:=res*i; 
 
faktorial:=res; 
end; 
 
 
function PowerA(x:real; a: integer; eps:real):real; 
var 
n:integer; 
cur,res:real; 
begin 
res:=0; 
n:=0; 
cur:=1; 
 
while(abs(cur) > eps) do 
begin 
res:=res+cur; 
inc(n); 
PowerA:=(chisl(a,n)*PowerA(x,n,eps))/faktorial(n); 
end; 
end; 
 
var 
x,eps:real; 
i,a:integer; 
begin 
 
writeln('Input x:'); 
read(x); 
writeln('Input a:'); 
read(a);
 
for i:=1 to 6 do 
begin 
writeln('Input Eps:'); 
read(eps); 
writeln('PowerA(x,a,eps)=',PowerA(x,a,eps)); 
readln;
 
end;
 
end.
Lena24 вне форума Ответить с цитированием
Старый 20.03.2013, 15:05   #2
netpolice
Форумчанин
 
Аватар для netpolice
 
Регистрация: 14.02.2013
Сообщений: 222
По умолчанию

Код:
function chisl(a: integer; n:integer):integer; 
var 
i,res:integer; 
begin 
res:=1; 
 
for i:=a-n+1 to a do 
res:=res*i; 
 
chisl:=res; 
end;
А как вы вещественное а так резко изменили на Integer, да и не только в данной ф-ции но и везде

Последний раз редактировалось netpolice; 20.03.2013 в 15:20.
netpolice вне форума Ответить с цитированием
Старый 20.03.2013, 15:16   #3
netpolice
Форумчанин
 
Аватар для netpolice
 
Регистрация: 14.02.2013
Сообщений: 222
По умолчанию

PowerA:=(chisl(a,n)*PowerA(x,n,eps))/faktorial(n);

Вот здесь вы, чёй то с рекурсиями напортачили (или я в формулу не вник),
там вроде как х в степени n

Код:
function PowerA(x:real; a: integer; eps:real):real; 
var 
n:integer; 
cur,res:real; 
begin 
res:=0; 
n:=0; 
cur:=1; 
 
while(abs(cur) > eps) do 
begin 
res:=res+cur; 
inc(n); 
PowerA:=(chisl(a,n)*PowerA(x,n,eps))/faktorial(n); 
end; 
end;
Здесь переменная cur как присвоили 1 , так она нигде и не меняется, на мой взгляд здесь while должен перейти в бесконечный цикл (или не выполнится ниразу)

Последний раз редактировалось netpolice; 20.03.2013 в 15:19.
netpolice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описать функцию! (C++) novichek01 Помощь студентам 7 22.01.2013 21:47
Описать функцию Ins1De Помощь студентам 0 04.06.2012 19:04
Описать функцию (C++) Etete Помощь студентам 0 27.12.2011 18:51
Описать функцию нахождения расстояния между 2-мя точками на плоскости, заданными своими координатами, и функцию .... zzz6 Помощь студентам 2 06.07.2011 08:24
описать функцию на Си Skrappy Помощь студентам 2 25.06.2011 08:02