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

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

Форум «Всё о Паскале» _ Задачи _ Циклы

Автор: Саня 7.01.2006 7:32

Всех поздравляю с наступившим Новым годом!
Помогите пожалуйста, поискал в ФАКЕ вроде ничего подобного нет. подскажите как решить эту задачу!
Вычислить значение выражения: cos(1+cos(3+cos(5+…+cos(23+cos(25))…)))
У меня ещё один вопросик, как записать в Паскале след-ю формулу(она прикреплена)


Прикрепленные файлы
Прикрепленный файл  formula.rtf ( 3.76 килобайт ) Кол-во скачиваний: 204

Автор: APAL 7.01.2006 8:41


Var Res : Real;

Procedure FFF(aa);
Begin
If aa>=3 then
Begin
Res:=aa-2+cos(Res);
FFF(aa-2);
End
else
Res:=cos(Res);
End;

Begin
Res:=25;
FFF(Res);
Writeln(Res:6:4);
End.



Так как не даны заведомо правильные входные и выходные данные - результат требует проверки.

Не думаю что это лучший вариант, на на лучшее в половине 5-го утра мозги не варят... бессонница, млин... blink.gif

Автор: volvo 7.01.2006 15:15

Я бы все-таки привел это к "хвостовой рекурсии":

function f(x: real): real;
begin
if x > 25 then f := 0
else f := cos(x + f(x + 2));
end;

begin
writeln(f(1):10:5);
end.

Автор: klem4 7.01.2006 18:45

вариант с использованием цикла :

uses crt;
const n : integer = 25;
var
s : single;
a : integer;
begin

clrscr;

s := cos(n);

a := 23;

while(a >= 1) do begin
s := cos(a + s);
dec(a,2);
end;

writeln(s:6:5);

readln;
end.



Автор: volvo 7.01.2006 18:48

klem4, а если подумать?
Может,

while(a >= 1) do begin
smile.gif

Автор: klem4 7.01.2006 18:57

хаха, тока проснулся я smile.gif))0 Там и в логике ошибка вроде .. щас поправлю

исправил