Не работает Clrscr - Turbo Pascal
Формулировка задачи:
Решение задачи: «Не работает Clrscr»
{Для з*д***ых epsil:(0..1) и x вычисляется
S(n;x)=Sum(i:0..n) u(i;x),
где u(i;x)=((-)^i*x^(2i)/(2i)!
и n=Min[k>=0:Abs(u(k;x))<=epsil] }
uses crt;
type Float=Single;
var x, {*ргуме*т}
epsil, {п*р*метр точ*ости}
s:Float;
l,n:Integer;
fout:Text;
procedure cost(x,eps:Float;var s:Float;var n:Integer);
{Вычисле*ие ч*стич*ой суммы ряд* s;
выход*ые п*р*метры: x-*ргуме*т фу*кции,
eps-п*р*метр точ*ости;
выход*ые п*р*метры: s-з**че*ие ч*стич*ой суммы,
n-*омер послед*его сл*г*емого,
*еяв*о з*д*в*емый к*к
n=Min[k>=0:Abs(u(k;x))<=epsil] }
{Д*лее при з*писи утвержде*ий использов**ы обоз**че*ия:
s(i)=Sum(j:0..i) u(j),
u(j)=(-)^j*x^(2j)/(2j)!.
Вычисле*ия производятся по рекурре*т*ым соот*оше*иям:
u(i)=u(i-1)*(-x*x)/(d(i);
d(i)=2i(2i);d(i)=d(i-1)+dd(i);
dd(i)=8i;dd(i)=dd(i-1)+8; }
var u, {сл*г*емое}
w:Float;
i,d,dd:Integer;
begin {sint}
i:=0;
dd:=0; d:=0;
u:=x; s:=x;
w:=-x*x;
{s=s(i)& u=u(i)& i=0}
while abs(u)>eps do
begin {s=s(i)& u=u(i)& d=d(i)& dd=dd(i)& i<n }
i:=i+1;
dd:=dd+8;
d:=d+dd;
u:=u*w/d;
s:=s+u;
{s=s(i)& u=u(i)& d=d(i)& dd=dd(i)& i<=n) }
end {while};
{s=s(n)& u=u(n) }
i:=n
end {sint};
procedure Input(var eps:Float);
{З*прос и вычисле*ие п*р*метр* точ*ости eps
в*еш*ий эффект: ввод с кл*ви*туры целого p>0,
т*кого, что Eps=10^(-p);
выход*ой п*р*метр eps-п*р*метр точ*ости. }
var p:Byte;
begin {Input}
Writeln('Epsilon=10^(-p);Введите p(p>0):');Readln(p);
eps:=exp(-p*ln(10.0));
end {Input};
begin {Main}
clrscr;
Assign(fout,'sinSngl.dat');
Rewrite(fout); Write(fout,'Single... ');
Input(epsil); {ввод п*р*метр* точ*ости}
Writeln(fout,'Epsilon=',epsil:10);
x:=Pi/6;
for l:=1 to 6 do
begin
Write(fout,'x=',x:10:7);
cost(x,epsil,x,n);
Writeln(fout,'S(x)=',s:16,':: Cos x=',Cos(x):16,'n=',n:4);
x:=x+2.*Pi;
end {for};
Close(fout);
readln
end.
Объяснение кода листинга программы
Этот код написан на Turbo Pascal и предназначен для вычисления суммы ряда sin(x) с использованием метода разбиения на треугольники. В первой строке объявляются переменные x, epsil и s, которые будут использоваться в функции cost. Далее следует функция cost, которая принимает на вход x, epsil и n (последний аргумент также используется внутри функции). Внутри функции происходит вычисление суммы ряда sin(x) с использованием метода разбиения на треугольники. Затем идет функция Input, которая принимает на вход p и вычисляет значение epsil. В основной части кода сначала сбрасывается экран с помощью clrscr. Затем открывается файл fout для записи. В цикле for вычисляется значение x, вызывается функция cost, выводится значение s и n, затем значение x увеличивается на 2*Pi. После окончания цикла for закрывается файл fout. В конце кода вызывается readln для чтения нажатия клавиши.