Форум: "Начинающим";
Текущий архив: 2014.12.21;
Скачать: [xml.tar.bz2];
Внизпрограмма на координаты Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.003 c