Процедуры и функции

Ответить
midletarket
Сообщения: 2
Зарегистрирован: 20 май 2009, 22:28

Помогите решить пожалуйста две задачки на процедуры и функции(одну написать с помощью процедуры а другую, с помощью функции):

Код: Выделить всё

program Z1;
var A,B,x,y,D:real;
K,N:integer;
begin
readln(A,B,N);
D:=abs(B-A)/N;
x:=A;
for K:=1 to N do
begin y:=(abs(sin(sqrt(10.5*x))/(exp(2/3*ln(x)-0.143))+2*3.14*x));
writeln(y);
x:=x+D;
end end. 
Для проверки: A=0.55; B=1.00; N=10

Код: Выделить всё

program Z2; 
var x,S:real;
N,K:integer;
begin
readln(x,N);
S:=0;
for K:=1 to N do begin
S:=S+abs(x-K)*sqrt(exp(K-1))/(ln(2+exp(K*ln(x))+exp((2*K+1)*ln(x))));
end; S:=exp(sqrt(x/N))*abs(x-K)*sqrt(exp(K-1))/(ln(2+exp(K*ln(x))+exp((2*K+1)*ln(x))));
writeln(S) end.
Для проверки:x=0.5; N=20
Заранее спасибо!!!
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

[syntax='pascal']
program Z1;
var A,B,x,D:real;
K,N:integer;

procedure CalcAndShowY(aX: real);
begin
writeln((abs(sin(sqrt(10.5*aX))/(exp(2/3*ln(aX)-0.143))+2*3.14*aX)));
end;

begin
readln(A,B,N);
D:=abs(B-A)/N;
x:=A;
for K:=1 to N do
begin
CalcAndShowY(x);
x:=x+D;
end
end.
[/syntax]

[syntax='pascal']
program Z2;
var x,S:real;
N,K:integer;

function CalcSquareRootExpr(ax: real; aK: integer): real;
begin
CalcSquareRootExpr := sqrt(exp(aK-1))/(ln(2+exp(aK*ln(ax))+exp((2*aK+1)*ln(ax))));
end;

begin
readln(x,N);
S:=0;
for K:=1 to N do
begin
S:=S+abs(x-K)*CalcSquareRootExpr(x, K);
end;
// вообще-то после выхода из цикла переменная цикла не определена по стандарту и обращаться к ней - моветон
S:=exp(sqrt(x/N))*abs(x-K)*CalcSquareRootExpr(x, K);
writeln(S)
end.
[/syntax]

не проверял - писал тут
Изображение
midletarket
Сообщения: 2
Зарегистрирован: 20 май 2009, 22:28

Спасибо огромное!!!
Ответить