Нужно перевсти прогу
-
BigMac
Нужно перевсти прогу
Люди........нид срочный хелп....Есть прога на Паскале.. до завтра надо
сдать на СИ!!!!!!!!! Кто может, поможите!!!!! Плиз.........
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 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 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.
-
ivank
Re: Нужно перевсти прогу
BigMac
Вот, код. Абсолютно непроверенный:
Код:
Код на Си как и просил ( а не наплюсах, как я люблю
)
Всё, вплоть до "мельчайшей отвратительной детали"(ц)РЛА оставлено как есть... Даже дурацкие операторы вроде E:=E;
зы в следующий раз поставлю замечание! (мысленно
)
(Отредактировал(а) ivank - 20:14 24-12-2001)
Вот, код. Абсолютно непроверенный:
Код:
Код: Выделить всё
#include <stdio.h>
#include <math.h>
#define a1 * *0.3870986
#define exc * 10.2056306
#define a2 * *0.7233316
#define exc2 *0.0067826
#define a3 * *1.0000000
#define exc3 *0.0167180
#define a4 * *1.5236883
#define exc4 *0.0933865
#define a5 * *5.2025610
#define exc5 *0.0484658
#define a6 * *9.5547470
#define exc6 *0.0556155
#define a7 * *19.2181400
#define exc7 *0.0463232
#define a8 * *30.1095700
#define exc8 *0.0090021
#define a9 * *39.7845900
#define exc9 *0.2538700
#define epsx *0.000001
#define RAD * 0.0174532925199433
float ee,M,E,k,t,a;
int i,b,n;
/*--------------------------------------------------------------------------*/
/* CS: Косинус-функция (градусы) */
float cs(float x)
{
* *return cos( x*RAD );
}
/*--------------------------------------------------------------------------*/
/*TN: тангенс-функция (градусы)*/
float tn(float x)
{
** float xx = x * RAD;
** return sin( xx ) / cos( xx );
}
/*--------------------------------------------------------------------------*/
/* ATN: Арктангенс-функция (градусы)*/
float atn(float x)
{
* * return arctan(x) / RAD;
}
/*--------------------------------------------------------------------------*/
void formyls(float t, float M, float E, float k);
{
* * float dE,dB,v,R,ht,Tp:real;
* * 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( fabs(dB) < epsx )
* * * * E=E
* *else
* * {
* * * * k=1;
* * * * while( fabs(dB)>epsx )
* * * * {
* * * * * * dE=dB/(1-ee*cos(E));
* * * * * * E-=dE;
* * * * * * dB=E-ee*sin(E)-M;
* * * * * * ++k;
* * * * }
* * ** *E=E;
* * }
* * R=a*(1-e*cos(E)); *
* * v=2*atn(sqrt((1+ee)/(1-ee))*tn(E/2));
}
/*--------------------------------------------------------------------------*/
int main()
{
* * // Очитка экоана -- системо-зависимо, обойдёмся и без этого :)
* *printf("Введите количество точек дробления периода оборота: ");
* *scanf("%f", &n);
* *printf("\nВведите планету:\n"
* * * * * " * * Меркурий-> 1 * * * *Венера-> 2\n"
* * * * * " * * Земля-> * *3 * * * *Марс-> * 4\n"
* * * * * " * * Юпитер-> * 5 * * * *Сатурн-> 6\n"
* * * * * "* * *Уран-> * * 7 * * * *Нептун-> 8\n"
* * * * * " * * Плутон-> 9\n" );
* *scanf( "%d", &b );
** switch( b )
* *{
* *case 1:
* * * *ee=exc1;
* ** * a=a1;
* * * * break
* *case 2:
* ** * ee=exc2;
* ** * a=a2;
* * * *break;
* *case 3:
* ** * ee=exc3;
* * * * a=a3;
* * * *break;
* *case 4:
* ** * ee=exc4;
* ** * a=a4;
* * * *break;
* *case 5:
* ** * ee=exc5;
* ** * a=a5;
* * * *break;
* *case 6:
* ** * ee=exc6;
* * * * a=a6;
* * * *break;
* *case 7:
* ** * ee=exc7;
* ** * a=a7;
* * * *break;
* *case 8:
* ** * ee=exc8;
* ** * a=a8;
* * * *break;
* *case 9:
* ** * ee=exc9;
* ** * a=a9;
* *}
* *for( i = 0; i < n; ++i )
* *{
* * * * formyls(t,M,E,k);
* ** * printf("i= %d\n", &i);
* ** * printf("t= %f.6\n", &t);
* ** * printf("M= %f.6\n", &M);
* ** * printf("E= %f.6\n", &E);
* ** * printf("k= %f.6\n", &k);
* ** * printf("epsx= %f.6",&epsx);
* *}
* *getch();
}Код на Си как и просил ( а не наплюсах, как я люблю
)Всё, вплоть до "мельчайшей отвратительной детали"(ц)РЛА оставлено как есть... Даже дурацкие операторы вроде E:=E;
зы в следующий раз поставлю замечание! (мысленно
)(Отредактировал(а) ivank - 20:14 24-12-2001)
-
ivank
-
BigMac
Re: Нужно перевсти прогу
ivank
Огромное спасибо...... я посмотрю и исправлю глюки...... Я перед тобой в долгу
Огромное спасибо...... я посмотрю и исправлю глюки...... Я перед тобой в долгу
-
noname00.pas
Re: Нужно перевсти прогу
All
Ну вот, опоздал
Я по этому случаю Си начал учить... Уже кстати написал свой вариант проги
Ну вот, опоздал

Я по этому случаю Си начал учить... Уже кстати написал свой вариант проги

-
noname00.pas
Re: Нужно перевсти прогу
noname00.pas
После C сразу учи его же с плюсамь -- гораздо полезней... А лучше сразу C++...
После C сразу учи его же с плюсамь -- гораздо полезней... А лучше сразу C++...
-
ivank
Re: Нужно перевсти прогу
ivank
Ну так у меня книжка называется "C/C++ вводный курс". А ещё у меня по умолчанию компилится в C++, я удивился, когда переключив в Си я получил еррор типа "Declaration is not allowed here" -
Ну так у меня книжка называется "C/C++ вводный курс". А ещё у меня по умолчанию компилится в C++, я удивился, когда переключив в Си я получил еррор типа "Declaration is not allowed here" -

-
BigMac
Re: Нужно перевсти прогу
noname00.pas
О, кинь мне на мыло, плизззз, потому что это че-то глючит...... пытаюсь исправить, но пока не получается.......... Кинь на мыло, ок?? или тут повесь, ок???
О, кинь мне на мыло, плизззз, потому что это че-то глючит...... пытаюсь исправить, но пока не получается.......... Кинь на мыло, ок?? или тут повесь, ок???
-
noname00.pas
Re: Нужно перевсти прогу
BigMac
Щас сижу в школе - на мыол кинуть не могу... Предыдущие несколько дней не мог зайти на форум - "URL не может быть доставлен..."
Вобщем лови сдесь... Компилятор - Borland C 3.1
Код:
As Is (я не несу никакой ответственности за последствия получения тобой этой програмки
)
Старался переводить близко к тексту. Вроде даже работает, но там есть куча тупых бессмысленных операторов типа "E := E;" ("*E=*E;"
.
Щас сижу в школе - на мыол кинуть не могу... Предыдущие несколько дней не мог зайти на форум - "URL не может быть доставлен..."
Вобщем лови сдесь... Компилятор - Borland C 3.1
Код:
Код: Выделить всё
# include <stdio.h>
# include <conio.h>
# include <math.h>
# define a1 0.3870986
# define exc1 0.2056306
# define a2 0.7233316
# define exc2 0.0067826
# define a3 1.0000000
# define exc3 0.0167180
# define a4 1.5236883
# define exc4 0.0933865
# define a5 5.2025610
# define exc5 0.0484658
# define a6 9.5547470
# define exc6 0.0556155
# define a7 19.2181400
# define exc7 0.0463232
# define a8 30.1095700
# define exc8 0.0090021
# define a9 39.7845900
# define exc9 0.2538700
# define epsx 0.000001
# define RAD 0.0174532925199433
# define pi 3.14159265358979324
int n, b, i;
float ee, M, E, k, t, a;
float sn(float x) {
return sin(x*RAD);
}
float cs(float x) {
return cos(x*RAD);
}
float tn(float x) {
return tan(x*RAD);
}
float atn(float x) {
return atan(x)/RAD;
}
//**************************************************************************
/*
float kepler (float E) {
dE=dB/(1-a*cos(E));
E=E-dE; /*Тоша. Эту функцию надо доделать и сунуть | *//*
dB=E-a*sin(E)-M; //
return //... //
} //
*/ //
//
//****************************************************************//********
//
void formyls (float *t, float *M, float *E, float *k) { //
float dE,dB,v,R,ht,Tp; //
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 (fabs(dB)<epsx)
*E=*E; //
else { //
*k=1; //
while (fabs(dB)>epsx) { //
dE=dB/(1-ee*cos(*E));// <<<<< вот сюда.......................
*E=*E-dE;
dB=*E-ee*sin(*E)-*M;
*k=*k+1;
}
*E=*E;
}
R=a*(1-*E*cos(*E));
v=2*atn(sqrt((1+ee)/(1-ee))*tn(*E/2));
}
void main () {
clrscr();
printf("Введите количество точек дробления оборота: ");
scanf("%d", &n);
printf("Введите планету: \n");
printf(" Меркурий-> 1 Венера-> 2\n");
printf(" Земля-> 3 Марс-> 4\n");
printf(" Юпитер-> 5 Сатурн-> 6\n");
printf(" Уран-> 7 Нептун-> 8\n");
printf(" Плутон-> 9\n");
scanf("%d", &b);
if (b==1) {
ee = exc1;
a = a1;
}
if (b==2) {
ee = exc2;
a = a2;
}
if (b==3) {
ee = exc3;
a = a3;
}
if (b==4) {
ee = exc4;
a = a4;
}
if (b==5) {
ee = exc5;
a = a5;
}
if (b==6) {
ee = exc6;
a = a6;
}
if (b==7) {
ee = exc7;
a = a7;
}
if (b==8) {
ee = exc8;
a = a8;
}
if (b==9) {
ee = exc9;
a = a9;
}
for (i=0;i<=n;i++) {
formyls(&t,&M,&E,&k);
printf("i= %d",i);
printf(" t= %f",t);
printf(" M= %f",M);
printf(" E= %f",E);
printf(" k= %f",k);
printf(" epsx= %f",epsx);
}
getch();
}As Is (я не несу никакой ответственности за последствия получения тобой этой програмки
)Старался переводить близко к тексту. Вроде даже работает, но там есть куча тупых бессмысленных операторов типа "E := E;" ("*E=*E;"
.