Нужно перевсти прогу

Ответить
 • Просмотры: 1
Аватара пользователя
BigMac

Нужно перевсти прогу

Сообщение 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.
Аватара пользователя
ivank

Re: Нужно перевсти прогу

Сообщение ivank »

BigMac

Вот, код. Абсолютно непроверенный:



Код:

Код: Выделить всё

#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

Re: Нужно перевсти прогу

Сообщение ivank »

В некоторых местах не стоят точки с запятой, сам расставь...
Аватара пользователя
BigMac

Re: Нужно перевсти прогу

Сообщение BigMac »

ivank

Огромное спасибо...... я посмотрю и исправлю глюки...... Я перед тобой в долгу
Аватара пользователя
noname00.pas

Re: Нужно перевсти прогу

Сообщение noname00.pas »

All

Ну вот, опоздал Изображение



Я по этому случаю Си начал учить... Уже кстати написал свой вариант проги Изображение
Аватара пользователя
noname00.pas

Re: Нужно перевсти прогу

Сообщение noname00.pas »

noname00.pas

После C сразу учи его же с плюсамь -- гораздо полезней... А лучше сразу C++...
Аватара пользователя
ivank

Re: Нужно перевсти прогу

Сообщение ivank »

Это я сказал, просто глюк какой-то произошол Изображение
Аватара пользователя
ivank

Re: Нужно перевсти прогу

Сообщение ivank »

ivank

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

Re: Нужно перевсти прогу

Сообщение BigMac »

noname00.pas

О, кинь мне на мыло, плизззз, потому что это че-то глючит...... пытаюсь исправить, но пока не получается.......... Кинь на мыло, ок?? или тут повесь, ок???
Аватара пользователя
noname00.pas

Re: Нужно перевсти прогу

Сообщение noname00.pas »

BigMac

Щас сижу в школе - на мыол кинуть не могу... Предыдущие несколько дней не мог зайти на форум - "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;&quotИзображение.
Ответить

Вернуться в «Программирование и базы данных»