Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2017, 12:48   #1
Rabbit777
 
Регистрация: 09.01.2017
Сообщений: 8
По умолчанию Вывод массива. Делфи

Помогите пожалуйста исправить ошибку при выводе массива данных. Необходимо также построить график по полученным данным(зависимость широты от долготы)
Код:
unit uRabbit777;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Label1: TLabel;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    GroupBox2: TGroupBox;
    Edit3: TEdit;
    Label5: TLabel;
    Edit4: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
const
  K_GAUSS=0.01720209895; // см - https://ru.wikipedia.org/wiki/Постоянная_Гаусса
  EPS=1e-6;              // погрешность, радианы
implementation
uses Math;

{$R *.dfm}
function MeanMotion(a:Double):Double;  // среднее движение , радиан/сутки
begin
 Result:=K_GAUSS/(a*Sqrt(a));
end;
function KeplerEqu(M,e:Double):Double; // уравнение Кеплера M-->E
var E1,E2:Double;
begin
 E2:=M;
 repeat
  E1:=E2;
  E2:=M+e*Sin(E1);
 until Abs(E1-E2)<EPS;
 Result:=E2;
end;
function TrueAnomV(Ex,e:Double):Double;  // истиная аномалия
begin
 Result:=2*ArcTan(Tan(Ex/2)*Sqrt((1+e)/(1-e)));
end;
function RadVect(a,e,Ex:Double):Double;  // радиус-вектор
begin
 Result:=a*(1-e*Cos(Ex));
end;
//
procedure TForm1.Button1Click(Sender: TObject);
var a,e,t0,n,i,u,w,Node,l_lon,b_lat,Period,t,M,ExAn,v,r,Lon:Double;
    k,z:Integer;
begin
 Label7.Caption:='';
 Memo1.Lines.Clear;
 Memo2.Lines.Clear;
 a:=StrToFloatDef(Edit1.Text,0);
 e:=StrToFloatDef(Edit2.Text,0);
 i:=StrToFloatDef(Edit5.Text,0);
 w:=StrToFloatDef(Edit6.Text,0);
 v:=StrToFloatDef(Edit7.Text,0);
 if (a<0)or(e<0)or(e>=1) then Exit;
 n:=MeanMotion(a);
 Period:=2*PI/n;
 Label7.Caption:='период = '+FloatToStr(RoundTo(Period,-2))+' секунд';
 t0:=StrToFloatDef(Edit3.Text,0);
 k:=StrToIntDef(Edit4.Text,0);
 for z:=0 to k do
  begin
   t:=t0+z*Period/k;
   M:=t*n;
   if M<0 then M:=M+2*PI;
   if M>2*PI then M:=M-2*PI;
   ExAn:=KeplerEqu(M,e);
   u:=w+v;
 l_lon:=Node+ArcTan2(Cos(i)*Sin(u),Cos(u));
 b_lat:=ArcSin(Sin(u)*Sin(i));
   Memo1.Lines.Add(FloatToStr(l_lon));
   Memo2.Lines.Add(FloatToStr(b_lat));
  end;
end;

end.
Rabbit777 вне форума Ответить с цитированием
Старый 22.01.2017, 13:06   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Скинь полностью проект. Здесь ограничение на обьём файлов, но ты можешь воспользоваться услугами бесплатного файлообменника... Потому что так сложно сто то сказать - лучше, то что называется, пощупать его в живую.
ura_111 вне форума Ответить с цитированием
Старый 22.01.2017, 18:06   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Rabbit777 Посмотреть сообщение
Label7.Caption:='период = '+FloatToStr(RoundTo(Period,-2))+' секунд';
Ты думаешь, если заменил слово дней на слово секунд - что-то изменится?
Если константа осталась та же.

Цитата:
Сообщение от Rabbit777 Посмотреть сообщение
K_GAUSS=0.01720209895;
type_Oleg вне форума Ответить с цитированием
Старый 22.01.2017, 18:09   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
пощупать его в живую
Пощупай вот здесь - http://www.programmersforum.ru/showthread.php?t=302592
type_Oleg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы Внимание! В задаче реализовать заполнение массива, вывод на экран исходного массива и измененного (если при реш Гарри Паскаль, Turbo Pascal, PascalABC.NET 3 26.06.2015 09:45
Одномерные массивы Внимание! В задаче реализовать заполнение массива, вывод на экран исходного массива и измененного (если при ре Гарри Паскаль, Turbo Pascal, PascalABC.NET 1 25.06.2015 08:55
Делфи.Вывод на экран матрицы Jane_Air Помощь студентам 1 04.11.2013 02:18
инициализация массива, вывод массива и обработка массива должны быть реализованы с помоshью функций airesjke Помощь студентам 0 02.03.2012 16:14
Вывод графики на форму ДЕЛФИ. Николай1 Помощь студентам 0 28.11.2011 17:15