uses
crt;
var a:byte;
i,j:word;
k,x,sum:real;
function stepen(base,exponenta:real):real;
begin
if exponenta=0 then stepen:=1
else
if (base=0) and (exponenta>0) then stepen:=0
else
stepen:=exp(exponenta*ln(base));
end;
function factorial(n:integer):integer;
var i:integer;
j:word;
begin
if n=0 then factorial:=1
else
begin
i:=1;
for j:=n downto 1 do
i:=i*j;
factorial:=i;
end;
end;
function controlfunc(x:real):real;
begin
controlfunc:=(1+x/2+sqr(x)/4)*exp(x/2)-1;
end;
begin
readln(a);
readln(x);
case a of
1:begin
j:=1;
sum:=0;
k:=0;
repeat
sum:=sum+k;
k:=((sqr(j)+1)/(stepen(2,j)*factorial(j)))*stepen(x,j);
inc(j);
until k<0.0001;
writeln('sum:=',sum);
end;
2:begin
j:=1;
sum:=0;
k:=((sqr(j)+1)/(stepen(2,j)*factorial(j)))*stepen(x,j);
while k>0.0001 do
begin
sum:=sum+k;
inc(j);
k:=((sqr(j)+1)/(stepen(2,j)*factorial(j)))*stepen(x,j);
end;
writeln('sum:=',sum);
end;
end;
writeln('control result:=',controlfunc(x));
readln;
end.
(Pascal)цикл с условием
Написать 2 вида программ, используя оператор с постусловием и оператор с предусловием:
Найти сумму ряда с точностью до члена ряда меньшего e=0.0001 и сравнить эту сумму с функцией для контроля.
На рисунке задание
[COLOR=magenta]Pascal[/COLOR]
попробуй так: