Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.12.21;
Скачать: CL | DM;

Вниз

программа на координаты   Найти похожие ветки 

 
opashka ©   (2013-12-02 11:59) [0]

раньше программировала в паскале. сейчас дали задачу на  Delphi. помогите пожалуйста - язык для знаком лишь отчасти.
Задача.
Для задания координат точки на плоскости использовать запись с 2 полями.
1) Задать координаты не более 10 точек. Найти самые удаленные от начала координат точки
2) вывести список расстояний точек от начала координат, предварительно упорядочив его по убыванию
использование функций и процедур является необходимым условием


 
Германн ©   (2013-12-02 12:05) [1]


> раньше программировала в паскале. сейчас дали задачу на
>  Delphi

Ничего специфического именно для Дельфи в задании нет. Паскалевское решение подойдет почти один в один. Только тип real заменить на что-нибудь более современное.


 
opashka ©   (2013-12-02 12:20) [2]

и все-таки... насколько я поняла, то многие вещи в Delphi упрощаются, например та же самая сортировка.
Если можно - полностью пример программы - хочу для себя разобраться и сравнить наверняка


 
Плохиш ©   (2013-12-02 12:26) [3]


> Если можно - полностью пример программы

Можно, но надо обговорить цену.


 
brother ©   (2013-12-02 12:34) [4]

> полностью пример программы

кхм...


 
[ВладОшин] ©   (2013-12-02 12:43) [5]

file- new- other - consol application
и пиши как на паскале
потом покажешь, если что не получилось - подскажем


> Если можно - полностью пример программы

нет :)
Помогают тут бесплатно. А выполнять вместо - за тугрики :)


 
И. Павел ©   (2013-12-02 13:50) [6]

>
> [0] opashka ©   (02.12.13 11:59)

Вот небольшой обзор Delphi: http://www.vspu.ac.ru/~chul/program/delphi.pdf
Ну а если у вас вызывает затруднение сортировка массива, то вот: http://shiva16.narod.ru/Unit14.htm
После прочтения этих вещей по идее, вопросов остаться не должно.
PS: расстояние от точки с координатами (A, B) до начала координат, это корень из A в квадрате плюс B в квадрате.


 
Ega23 ©   (2013-12-02 14:21) [7]

Сессия близится...


 
Jeer ©   (2013-12-02 15:21) [8]

Одну процедуру подкину:

"С миру по нитке - и будешь богат,
Возникнет свой собственный Халифат,
Гарем и прислужники, страсть и молва,
Сумеют раздеть опять догола."

(С) Jeer

// Сортировка Шелла
procedure Sort_Shell(ar: TFloatArray);
var
 i, j, N: integer;
 T: boolean;
 procedure _Swap;
 var x: TFloat;
 begin
   x := ar[i]; ar[i] := ar[i + j]; ar[i + j] := x;
   T := True;
 end;
begin
 N := Length(ar);
 j := N div 2;
 while j > 0 do begin
   T := true;
   while T do begin
     T := false;
     for i := 0 to N - j - 1 do
       if (ar[i] > ar[i + j]) then _Swap();
   end;
   j := j div 2;
 end;
end;


 
Ega23 ©   (2013-12-02 15:38) [9]

У меня ещё где-то IncDay была. Так, для коллекции.


 
брат Птибурдукова   (2013-12-02 15:52) [10]


> Ega23 ©   (02.12.13 15:38) [9]
Оно? http://www.guildalfa.ru/alsha/comment/reply/6


 
Ega23 ©   (2013-12-02 16:03) [11]


> Оно? http://www.guildalfa.ru/alsha/comment/reply/6


Да. Но у Sha она в 2009-м была добавлена, реальная-то году в 2002-м появилась.


 
Jeer ©   (2013-12-02 16:05) [12]

Дистанция на плоскости не интересна, тривиальна.
Вот - на эллипсе ( приближенный ):

//** Расчет длины дуги [km] на эллипсе между двумя точками с гео-координатами B1,L1 и B2,L2
// B,L - широта, долгота в градусах, соответственно.
// Погрешность <= 0.1% от длины дуги

function _Dist2Points_Ellipse(B1, L1, B2, L2: Double): Double;
var A,C, B, dB, dL: extended;
begin
dB := B2 - B1; dL := L2 - L1; B := 0.5*(B1 + B2);
if (B < 50) then A := 111.3 - B * (0.0156 * B + 0.023)
else A := 135.35 - B * (0.00586 * B + 0.978);
C := 110.44 + 0.014 * B;
Result := sqrt(sqr(dB*C) + sqr(dL*A));
end;


 
Sha ©   (2013-12-03 10:07) [13]

> Ega23 ©   (02.12.13 16:03) [11]
> Да. Но у Sha она в 2009-м была добавлена,

Ага, тогда искал более быстрый вариант Now, и оно мне вспомнилось.


 
Ega23 ©   (2013-12-03 10:46) [14]


> Ага, тогда искал более быстрый вариант Now, и оно мне вспомнилось.


Я к сожалению не сумел сохранить описание к ней. Описание было не менее ржачное.


 
Inovet ©   (2013-12-03 11:19) [15]

> [14] Ega23 ©   (03.12.13 10:46)

Неужели в сети не сохранилось.


 
Ega23 ©   (2013-12-03 11:25) [16]


> Неужели в сети не сохранилось.

Не нашёл.


 
Inovet ©   (2013-12-03 11:34) [17]

> [16] Ega23 ©   (03.12.13 11:25)
> Не нашёл.

Я недавно тоже только у Sha находил, но дальше и не искал. Такие шедевры должны в мировом пантеоне сакральных знаний храниться.


 
Sha ©   (2013-12-03 12:01) [18]

> Ega23 ©   (03.12.13 10:46) [14]

ну так там в одном флаконе:
http://www.guildalfa.ru/alsha/node/6

Jeer ©   (02.12.13 15:21) [8]

Кстати, Седжвик рекомендует ряд шагов 4^(i+1) + 3*2^i + 1


 
Ega23 ©   (2013-12-03 12:13) [19]


> ну так там в одном флаконе:


Нееее... Там были комментарии от автора IncDay. Типа, он в банковской сфере работает, отчёты какие-то клепает. И был неприятно удивлён: IncYear, IncMonth, etc - есть, а вот IncDay - нету. Решил восполнить пробел.
В общем, текст с побудительными мотивами доставлял не менее, чем сама IncDay.


 
Sha ©   (2013-12-03 12:15) [20]

> Jeer ©   (02.12.13 15:21) [8]

Странно и в вике его нет почему-то, вот ссылка:
http://www.cs.princeton.edu/~rs/shell/paperF.pdf


 
Sha ©   (2013-12-03 12:20) [21]

> Ega23 ©   (03.12.13 12:13) [19]

Это я пропустил, жаль.

У меня оно на стене висело.
Всем кто приходил, включая начальство, говорили типа шедевр.
Кивали головой и уходили.
Пришлось снять, когда кое-кто из приходящих решил изучить код повнимательнее.


 
Ega23 ©   (2013-12-03 12:24) [22]


> У меня оно на стене висело.
> Всем кто приходил, включая начальство, говорили типа шедевр.


Вот и у меня также было. Сама функция была спасена, а вот обсуждение, к сожалению, кто-то выпилил.


 
Sha ©   (2013-12-03 12:43) [23]

IncDay   dmi     05.01.03 20:21
При создании бухгалтерской программы я столкнулся с
необходимостью изменить значение даты (класс TDateTime) путем добавления количества дней. Но в Delphi готовой функции не оказалось. Просмотрев в Delphi7 исходный текст функции IncMonth (добавление месяцев к дате), я решил создать функцию IncDay (добавление дней к дате).
Если у кого-то возникла подобная проблема, готов поделиться "исходником".


 
Ega23 ©   (2013-12-03 13:44) [24]

ДА! Это оно!


 
Вася   (2013-12-03 17:35) [25]

Дайте почитать!!!


 
Вася   (2013-12-03 17:36) [26]

Все, нашел


 
Вася   (2013-12-03 17:41) [27]

Не качается, а я надеялся увидеть код хуже чем мой...


 
Jeer ©   (2013-12-03 17:55) [28]

>Странно и в вике его нет почему-то, вот ссылка:

Да, вроде вполне известный алгоритм сортировки.
Дает гарантированное время, а, в случае сильно упорядоченных данных, даже лучше чем quick-sort.

Кроме Седжвика, были еще последователи, улучшавшие алгоритм тем или иным выбором дистанции.
http://sun.aei.polsl.pl/~mciura/publikacje/shellsort.pdf

Как-то, с одной из моих дипломных студенток, мы "нарисовали" тест-модуль различных видов сортировка для обоснования его выбора.
Наступило хорошее прояснение отличий.

http://s017.radikal.ru/i411/1312/a4/563377dffde9.jpg

Сравнительная таблица:
http://s020.radikal.ru/i715/1312/61/e5648201fda0.jpg


 
Jeer ©   (2013-12-03 17:59) [29]

Сравнение:
http://s017.radikal.ru/i423/1312/4f/aa706f6001c9.jpg


 
Sha ©   (2013-12-03 19:42) [30]

> Jeer ©   (03.12.13 17:55) [28]

Я не о самом алгоритме, а о способе выбора приращений.
От него скорость сильно зависит.

Седжвик улучшал его дважды.
Первое улучшение (на которое дал ссылку) было самым значительным.
Но его вика почему-то забыла.
Второе еще совсем немного улучшает, не меняя O(). Но о нем все помнят.


 
Sha ©   (2013-12-03 19:45) [31]

Причем для малых массивов первый вариант даже чуть лучше.


 
Jeer ©   (2013-12-03 20:22) [32]

Согласен.
Для студентов эта информация была не основной, да и здесь я привел "стандартный" вариант Shell-а от 1959 г. :)


 
Dennis I. Komarov ©   (2013-12-04 17:15) [33]


> http://www.guildalfa.ru/alsha/node/6

Шикарно!
:)



Страницы: 1 вся ветка

Текущий архив: 2014.12.21;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.013 c
2-1385899743
cr@nk
2013-12-01 16:09
2014.12.21
Парсер большого XML


15-1399926602
Юрий
2014-05-13 00:30
2014.12.21
С днем рождения ! 13 мая 2014 вторник


2-1386226163
TheOwl
2013-12-05 10:49
2014.12.21
удалить из списка не дубликаты


1-1329071444
Proger254
2012-02-12 22:30
2014.12.21
Вызов функции чужого приложения


15-1400008621
Дмитрий СС
2014-05-13 23:17
2014.12.21
Широковещательный адрес