BigMac
24-12-2001, 18:46
Люди........нид срочный хелп....Есть прога на Паскале.. до завтра надо
сдать на СИ!!!!!!!!! Кто может, поможите!!!!! Плиз.........
PROGRAM planpo;
USES Crt;
CONST
a1= 0.3870986; exc1=0.2056306;
a2= 0.7233316; exc2=0.0067826;
a3= 1.0000000; exc3=0.0167180;
a4= 1.5236883; exc4=0.0933865;
a5= 5.2025610; exc5=0.0484658;
a6= 9.5547470; exc6=0.0556155;
a7=19.2181400; exc7=0.0463232;
a8=30.1095700; exc8=0.0090021;
a9=39.7845900; exc9=0.2538700;
epsx=0.000001;
VAR
ee,M,E,k,t,a:real;
i,b,n:integer;
(*--------------------------------------------------------------------------*)
(* CS: Косинус-функция (градусы) *)
FUNCTION CS(X: REAL): REAL;
CONST
RAD=0.0174532925199433;
BEGIN
CS:=COS(X*RAD)
END;
(*--------------------------------------------------------------------------*)
(*TN: тангенс-функция (градусы)*)
FUNCTION TN(X: REAL): REAL;
CONST
RAD=0.0174532925199433;
VAR
XX: REAL;
BEGIN
XX:=X*RAD;
TN:=SIN(XX)/COS(XX);
END;
(*--------------------------------------------------------------------------*)
(* ATN: Арктангенс-функция (градусы)*)
FUNCTION ATN(X: REAL): REAL;
CONST
RAD=0.0174532925199433;
BEGIN
ATN:=ARCTAN(X)/RAD
END;
(*--------------------------------------------------------------------------*)
{ function kepler(E:real):real;
begin
dE:=dB/(1-a*Cos(E));
E:=E-dE; (*Тоша. Эту функцию надо доделать и сунуть | *)
dB:=E-a*Sin(E)-M; |
kepler:= |
end; | }
(*-------------------------------------------------------------------|------*)
Procedure formyls(var t,M,E,k:real); { | }
Var { | }
dE,dB,v,R,ht,Tp:real; { | }
Begin { | }
Tp:=Sqrt(a*a*a); { | }
ht:=Tp/n; { | }
t:=i*ht; { | }
M:=Pi*2*Pi*t/(Tp*180); { | }
E:=M; { | }
dB:=0.016718*Sin(E); { | }
If ABS(dB)<epsx then { | }
E:=E { | }
else { | }
begin { | }
k:=1; { | }
while ABS(dB)>epsx do { | }
begin { | }
dE:=dB/(1-ee*Cos(E)); {-----------------сюда----------------| }
E:=E-dE;
dB:=E-ee*Sin(E)-M;
k:=k+1;
end;
E:=E;
end;
R:=a*(1-e*Cos(E));
v:=2*ATn(Sqrt((1+ee)/(1-ee))*Tn(E/2));
End;
(*--------------------------------------------------------------------------*)
BEGIN
ClrScr;
WriteLn('Введите количество точек дробления периода оборота: ');
ReadLn(n);
WriteLn('Введите планету: ');
WriteLn(' Меркурий-> 1 Венера-> 2');
WriteLn(' Земля-> 3 Марс-> 4');
WriteLn(' Юпитер-> 5 Сатурн-> 6');
WriteLn(' Уран-> 7 Нептун-> 8');
WriteLn(' Плутон-> 9');
ReadLn(b);
if b=1 then
begin
ee:=exc1;
a:=a1;
end;
if b=2 then
begin
ee:=exc2;
a:=a2;
end;
if b=3 then
begin
ee:=exc3;
a:=a3;
end;
if b=4 then
begin
ee:=exc4;
a:=a4;
end;
if b=5 then
begin
ee:=exc5;
a:=a5;
end;
if b=6 then
begin
ee:=exc6;
a:=a6;
end;
if b=7 then
begin
ee:=exc7;
a:=a7;
end;
if b=8 then
begin
ee:=exc8;
a:=a8;
end;
if b=9 then
begin
ee:=exc9;
a:=a9;
end;
for i:=0 to n do
begin
formyls(t,M,E,k);
Write('i= ',i);
Write(' t= ',t:10:6);
Write(' M= ',M:10:6);
Write(' E= ',E:10:6);
Write(' k= ',k:10:6);
WriteLn(' epsx= ',epsx:8:6);
end;
ReadLn;
END.
сдать на СИ!!!!!!!!! Кто может, поможите!!!!! Плиз.........
PROGRAM planpo;
USES Crt;
CONST
a1= 0.3870986; exc1=0.2056306;
a2= 0.7233316; exc2=0.0067826;
a3= 1.0000000; exc3=0.0167180;
a4= 1.5236883; exc4=0.0933865;
a5= 5.2025610; exc5=0.0484658;
a6= 9.5547470; exc6=0.0556155;
a7=19.2181400; exc7=0.0463232;
a8=30.1095700; exc8=0.0090021;
a9=39.7845900; exc9=0.2538700;
epsx=0.000001;
VAR
ee,M,E,k,t,a:real;
i,b,n:integer;
(*--------------------------------------------------------------------------*)
(* CS: Косинус-функция (градусы) *)
FUNCTION CS(X: REAL): REAL;
CONST
RAD=0.0174532925199433;
BEGIN
CS:=COS(X*RAD)
END;
(*--------------------------------------------------------------------------*)
(*TN: тангенс-функция (градусы)*)
FUNCTION TN(X: REAL): REAL;
CONST
RAD=0.0174532925199433;
VAR
XX: REAL;
BEGIN
XX:=X*RAD;
TN:=SIN(XX)/COS(XX);
END;
(*--------------------------------------------------------------------------*)
(* ATN: Арктангенс-функция (градусы)*)
FUNCTION ATN(X: REAL): REAL;
CONST
RAD=0.0174532925199433;
BEGIN
ATN:=ARCTAN(X)/RAD
END;
(*--------------------------------------------------------------------------*)
{ function kepler(E:real):real;
begin
dE:=dB/(1-a*Cos(E));
E:=E-dE; (*Тоша. Эту функцию надо доделать и сунуть | *)
dB:=E-a*Sin(E)-M; |
kepler:= |
end; | }
(*-------------------------------------------------------------------|------*)
Procedure formyls(var t,M,E,k:real); { | }
Var { | }
dE,dB,v,R,ht,Tp:real; { | }
Begin { | }
Tp:=Sqrt(a*a*a); { | }
ht:=Tp/n; { | }
t:=i*ht; { | }
M:=Pi*2*Pi*t/(Tp*180); { | }
E:=M; { | }
dB:=0.016718*Sin(E); { | }
If ABS(dB)<epsx then { | }
E:=E { | }
else { | }
begin { | }
k:=1; { | }
while ABS(dB)>epsx do { | }
begin { | }
dE:=dB/(1-ee*Cos(E)); {-----------------сюда----------------| }
E:=E-dE;
dB:=E-ee*Sin(E)-M;
k:=k+1;
end;
E:=E;
end;
R:=a*(1-e*Cos(E));
v:=2*ATn(Sqrt((1+ee)/(1-ee))*Tn(E/2));
End;
(*--------------------------------------------------------------------------*)
BEGIN
ClrScr;
WriteLn('Введите количество точек дробления периода оборота: ');
ReadLn(n);
WriteLn('Введите планету: ');
WriteLn(' Меркурий-> 1 Венера-> 2');
WriteLn(' Земля-> 3 Марс-> 4');
WriteLn(' Юпитер-> 5 Сатурн-> 6');
WriteLn(' Уран-> 7 Нептун-> 8');
WriteLn(' Плутон-> 9');
ReadLn(b);
if b=1 then
begin
ee:=exc1;
a:=a1;
end;
if b=2 then
begin
ee:=exc2;
a:=a2;
end;
if b=3 then
begin
ee:=exc3;
a:=a3;
end;
if b=4 then
begin
ee:=exc4;
a:=a4;
end;
if b=5 then
begin
ee:=exc5;
a:=a5;
end;
if b=6 then
begin
ee:=exc6;
a:=a6;
end;
if b=7 then
begin
ee:=exc7;
a:=a7;
end;
if b=8 then
begin
ee:=exc8;
a:=a8;
end;
if b=9 then
begin
ee:=exc9;
a:=a9;
end;
for i:=0 to n do
begin
formyls(t,M,E,k);
Write('i= ',i);
Write(' t= ',t:10:6);
Write(' M= ',M:10:6);
Write(' E= ',E:10:6);
Write(' k= ',k:10:6);
WriteLn(' epsx= ',epsx:8:6);
end;
ReadLn;
END.