Язык программирования Pascal. Строки и записи. Васильев В.В - 13 стр.

UptoLike

13
членов ряда до тех пор , пока очередной член ряда cur не станет меньше задан -
ной точности e .
Для монотонно убывающих по модулю знакочередующихся рядов остаток
в ряде Тейлора не превосходит первого отбрасываемого члена.
Program ComplexSin;Uses crt;Type complex=record re, im:
real end;{комплексное число}
Var eps:real; z,sin_z:complex;
function abs_(z:complex):real; {модуль комплексного числа} begin
abs_:=sqrt(sqr(z.re)+sqr(z.im))
end;{abs_z}
procedure Add_(z1,z2:complex; var res:complex);
{сложение комплексных чисел z1 и z2} begin
res.re:=z1.re+z2.re; res.im:=z1.im+z2.im
end;{Add_}
procedure multy_(z1,z2:complex; var res:complex);
{умножение комплексных чисел z1 и z2} begin
res.re:=z1.re*z2.re-z1.im*z2.im;
res.im:=z1.re*z2.im+z1.im*z2.re
end;{multy_}
procedure div_(var z:complex; r:integer);
{деление комплексного числа z на целое r} begin if r<>0
then begin z.re:=z.re/r; z.im:=z.im/r end;
end;{div_}
procedure Sin_(z:complex; e:real; var res:complex);
{вычисление комплексной функции sin(z)}
var cur,sq:complex; n:integer;
begin
multy_(z,z,sq); {вычисление квадрата z} res:=z; cur:=z;
n:=0; {установка начальных значений} while abs_(cur)>=e do
begin
multy_(cur,sq,cur);
div_(cur,(-1)*(2*n+2)*(2*n+3));
inc(n); add_(res,cur,res)
end;
end;{Sin_}
Begin
Textbackground(7); Textcolor(blue); Clrscr;
writeln('* Введите комплексное число *');
write('вещественная часть: '); readln(z.re);
write('мнимая часть: '); readln(z.im);
writeln('* Введите точность вычислений eps *');
repeat
readln(eps)
until eps>0;
sin_(z,eps,sin_z); {вывод результата}