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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2012, 22:02   #1
мария71
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 12
По умолчанию Рекурсия. Вычислить рекурсивно функцию вида y=cos(x)+cos(x^2)+cos(x^3)+...+cos( x^n).

У меня задание вычислить рекурсивно функцию вида y=cos(x)+cos(x^2)+cos(x^3)+...+cos( x^n).
Но мне кажется что работает она неправильно и я не знаю что надо исправить...посмотрите пожалуйста и скажите что не так.
Код:
Program ret;
const
 max=10;
var
stepen,argyment:integer;
t,y:real;
{---------------------------------------------------}
 
Function Vvod:integer;
var
 st:integer;
 s:string;
 er:integer;
begin
repeat
  write('Введите максимальную степень:');
  readln(s);
  val(s,st,er);
  if er<>0 then
    writeln('ошибка!введите число')
  else
    if st>max then
      writeln('ошибка!значение должно быть < max')
  else
    If st<0 then
      writeln('ошибка!значение должно быть  >0');
until(er=0) or (st<max) or (st>0);
Vvod:=st;
end;
{---------------------------------------------------}
Function Arg:integer;
var
 x:integer;
 er:integer;
 s:string;
begin
repeat
  write('введите значение агрумента:');
  readln(s);
  val(s,x,er);
  if er<>0 then
    writeln('ошибка!Введите число');
until(er=0);
Arg:=x;
end;
{-----------------------------------------------}
Function Schet(a,b:integer):real;
begin
t:=0;
  if a=0 then
    Schet:=1
  else
     Schet:=b*Schet(a-1,b);
 
end;
{---------------------------------------------------}
 
begin
 
stepen:=Vvod;
argyment:=Arg;
t:=t+cos(Schet(stepen,argyment));
writeln('Значение функции',t:3:3);
end.

Последний раз редактировалось Stilet; 01.04.2012 в 13:47.
мария71 вне форума Ответить с цитированием
Старый 31.03.2012, 22:29   #2
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Код:
for i:=1 to 5 do
sum:=sum+cos(exp(i*ln(x)));
Сложно представляю себе рекурсивную реализацию.
there are no limits when you're software engineer

Последний раз редактировалось spein; 31.03.2012 в 22:31.
spein вне форума Ответить с цитированием
Старый 31.03.2012, 22:40   #3
мария71
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 12
По умолчанию

мне только непонятно зачем нужна экспанента и логарифм
мария71 вне форума Ответить с цитированием
Старый 31.03.2012, 23:02   #4
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Это все чистая математика. Изучайте:
2^5 = exp(5 * ln(2));
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 31.03.2012, 23:17   #5
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
 Function Schet(z,x:real;n:integer):real;
 begin
 if n=1 then
  Schet:=cos(z)
 else
  Schet:=cos(z)*Schet(z*x,x,n-1);
 end;
...
// вывод результата
writeln('Значение функции',Schet(argyment,argyment,stepen):3:3);
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычислить: У=cos(x)+cos(x)*(x)+ cos(X)*(X)*(X)+...+cos(X)(в n степени) КАША Помощь студентам 20 01.11.2010 17:34
cos(x)+cos(cos(x))+cos(cos(cos(x))) ... Рамакришна Помощь студентам 8 03.11.2009 13:41
функция cos поЛотЕнчик_просТо Общие вопросы C/C++ 9 30.11.2008 17:40
Cos(alpha) на СИ++ Рустам Помощь студентам 7 23.11.2008 15:30
Вычислить массив R[1:n] по формуле r[i]=0,8 cos (4ax - ih) ser-stereo Паскаль, Turbo Pascal, PascalABC.NET 1 23.10.2008 22:41