|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Нужно перевсти прогу |
|
|
Нужно перевсти прогу
|
Призрачный админ Сообщения: 5254 |
Профиль | Отправить 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
|
Профиль | Сайт | Отправить 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) |
------- Отправлено: 20:11, 24-12-2001 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать В некоторых местах не стоят точки с запятой, сам расставь...
|
------- Отправлено: 20:16, 24-12-2001 | #3 |
Призрачный админ Сообщения: 5254
|
Профиль | Отправить PM | Цитировать ivank
Огромное спасибо...... я посмотрю и исправлю глюки...... Я перед тобой в долгу |
------- Отправлено: 22:36, 24-12-2001 | #4 |
Студент Сообщения: 445
|
Профиль | Отправить PM | Цитировать All
Ну вот, опоздал Я по этому случаю Си начал учить... Уже кстати написал свой вариант проги |
|
------- Отправлено: 10:07, 25-12-2001 | #5 |
Guest |
noname00.pas
После C сразу учи его же с плюсамь -- гораздо полезней... А лучше сразу C++... |
Отправлено: 10:32, 25-12-2001 | #6 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Это я сказал, просто глюк какой-то произошол
|
------- Отправлено: 10:40, 25-12-2001 | #7 |
Студент Сообщения: 445
|
Профиль | Отправить PM | Цитировать ivank
Ну так у меня книжка называется "C/C++ вводный курс". А ещё у меня по умолчанию компилится в C++, я удивился, когда переключив в Си я получил еррор типа "Declaration is not allowed here" - |
------- Отправлено: 17:16, 25-12-2001 | #8 |
Призрачный админ Сообщения: 5254
|
Профиль | Отправить PM | Цитировать noname00.pas
О, кинь мне на мыло, плизззз, потому что это че-то глючит...... пытаюсь исправить, но пока не получается.......... Кинь на мыло, ок?? или тут повесь, ок??? |
------- Отправлено: 18:07, 25-12-2001 | #9 |
Студент Сообщения: 445
|
Профиль | Отправить 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(); } Старался переводить близко к тексту. Вроде даже работает, но там есть куча тупых бессмысленных операторов типа "E := E;" ("*E=*E;". |
------- Отправлено: 12:48, 29-12-2001 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Нужно найти или написать прогу | 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 |
|