Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Нужно перевсти прогу

Ответить
Настройки темы
Нужно перевсти прогу

Аватара для BigMac

Призрачный админ


Сообщения: 5254
Благодарности: 90


Конфигурация

Профиль | Отправить PM | Цитировать


Люди........нид срочный хелп....Есть прога на Паскале.. до завтра надо
сдать на СИ!!!!!!!!! Кто может, поможите!!!!! Плиз.........
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.

-------
Истина где-то рядом...


Отправлено: 18:46, 24-12-2001

 

редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


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)

-------
http://ivank.ru


Отправлено: 20:11, 24-12-2001 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


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

-------
http://ivank.ru


Отправлено: 20:16, 24-12-2001 | #3


Аватара для BigMac

Призрачный админ


Сообщения: 5254
Благодарности: 90

Профиль | Отправить PM | Цитировать


ivank
Огромное спасибо...... я посмотрю и исправлю глюки...... Я перед тобой в долгу

-------
Истина где-то рядом...


Отправлено: 22:36, 24-12-2001 | #4


Студент


Сообщения: 445
Благодарности: 8

Профиль | Отправить PM | Цитировать


All
Ну вот, опоздал

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

-------
*Origin: Lots of people talking, few of them - no... (2:5020/****.**)


Отправлено: 10:07, 25-12-2001 | #5


Аватара для Guest

Guest


Профиль | Цитировать


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

Отправлено: 10:32, 25-12-2001 | #6


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Это я сказал, просто глюк какой-то произошол

-------
http://ivank.ru


Отправлено: 10:40, 25-12-2001 | #7


Студент


Сообщения: 445
Благодарности: 8

Профиль | Отправить PM | Цитировать


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

-------
*Origin: Lots of people talking, few of them - no... (2:5020/****.**)


Отправлено: 17:16, 25-12-2001 | #8


Аватара для BigMac

Призрачный админ


Сообщения: 5254
Благодарности: 90

Профиль | Отправить PM | Цитировать


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

-------
Истина где-то рядом...


Отправлено: 18:07, 25-12-2001 | #9


Студент


Сообщения: 445
Благодарности: 8

Профиль | Отправить PM | Цитировать


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;".

-------
*Origin: Lots of people talking, few of them - no... (2:5020/****.**)


Отправлено: 12:48, 29-12-2001 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Нужно перевсти прогу

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Нужно найти или написать прогу Dj vasul Программирование и базы данных 1 03-04-2009 01:12
Подскажите прогу Liquid Программное обеспечение Windows 4 05-03-2007 02:53
Ищу прогу dimon55 Хочу все знать 2 07-01-2005 10:36
Посоветуйте прогу Sinner Сетевые технологии 5 25-09-2003 08:08
Как перевсти char в int? Sage Программирование и базы данных 4 27-03-2003 09:44




 
Переход