Текущий архив: 2003.06.16;
Скачать: CL | DM;
ВнизПоиск Найти похожие ветки
← →
TrollXP (2003-05-24 17:15) [0]Привет, мастера! У меня есть несколько переменных. Допустим n1:=1, n2:=0,5, n3:=12 и т.д Мне нужно записать их в Memo в порядке уменьшения. Мож кто даст исходник алгоритма или ссылочку?? Заранее благодарен.
← →
acp (2003-05-24 17:26) [1]А сколько всего переменных? Может лучще всего поместить их в массив, потом отсортировать и вывести?
← →
TrollXP (2003-05-24 17:28) [2]всего 22. дело в том, что у меня с детства проблема с массивами :(
← →
acp (2003-05-24 17:40) [3]Это не решение - все значения содержать в переменных. Но если хочешь извратиться то попробуй...
MaxVal := n1;
if MaxVal < n2 then MaxVal := n2;
if MaxVal < n3 then MaxVal := n3;
if MaxVal < n4 then MaxVal := n3;
...
Конечно, можно было бы придумать что-нибудь типа обращения к переменным по имени строковому. Но, насколько я знаю Паскаль, он такого не поддерживает. Но есть ещё например ключевое слово absolute, т.е. ряд переменных можно наверное было бы интерпретировать как массив, но опять же в Дельфи такого нельзя...
← →
Palladin (2003-05-24 17:45) [4]
> дело в том, что у меня с детства проблема с массивами :(
а к доктору обращались?
← →
Юрий Федоров (2003-05-24 17:46) [5]var N : array[1..22] of Double;
n[1]:=1;
n[2]:=0,5;
n[3]:=12;
Какие у тебя проблемы с массивами ?
← →
TrollXP (2003-05-24 17:47) [6]А ты не мог бы предложить вариант с массивом, плз!
← →
TrollXP (2003-05-24 17:48) [7]2 Фрий Федоров
Я их просто не понимаю
← →
Юрий Федоров (2003-05-24 17:51) [8]Чего тут не понимать, работаешь с элементами массива как с переменными, особенно в данном случае, когда заранее известно количество элементов в массиве - то есть массив статический, выделять - освобождать память не надо
← →
TrollXP (2003-05-24 17:54) [9]А вот ты мне объясни, как из того примера, что ты мне дал, расположить их в порядке убыв
← →
Юрий Федоров (2003-05-24 18:02) [10]Алгоритм за тебя писать не буду, думай - ты же программист
← →
TrollXP (2003-05-24 18:04) [11]Согласен, но и на этом спасибо!
← →
Юрий Федоров (2003-05-24 18:09) [12]ПОсмотри в исходном коде VCL, как организована сортировка, например в
TStringList.Sort
← →
Anatoly Podgoretsky (2003-05-24 19:15) [13]Юрий Федоров © (24.05.03 18:09)
Зверь :-)
← →
TrollXP (2003-05-27 08:46) [14]Народ, помогите, плиз!!! Единственный выход, который я вижу-пропсиать все ксловия типа if n[1]>n[2] then и т.п. Но писать для каждой переменной несколько условий!!! Я просто кончусь.
← →
Думкин (2003-05-27 08:51) [15]Опять сессия - косяком пошли.
← →
gek (2003-05-27 09:11) [16]Есть такая вещь как "Сортировка методом пузырька", для такого количества данных как у тебя подойдет - там все очень просто
← →
Digitman (2003-05-27 09:18) [17]
procedure TForm1.Button4Click(Sender: TObject);
var
StringList: TStringList;
n1, n2, n3: Double;
function CompareProc(List: TStringList; Index1, Index2: Integer): Integer;
var
v1, v2: Double;
begin
with List do
begin
v1 := StrToFloat(Values[Names[Index1]]);
v2 := StrToFloat(Values[Names[Index2]]);
if v1 > v2 then
Result := -1
else if v1 < v2 then
Result := 1
else
Result := 0;
end;
end;
begin
n1:=1; n2:=0.5; n3:=12;
StringList := TStringList.Create;
try
with StringList do
begin
Add("n1 = " + FloatToStr(n1));
Add("n2 = " + FloatToStr(n2));
Add("n3 = " + FloatToStr(n3));
CustomSort(@CompareProc);
end;
Memo.Lines.Assign(StringList);
finally
StringList.Free;
end;
end;
← →
TrollXP (2003-05-27 09:27) [18]> Digitman
Мля, спасибо!
← →
Digitman (2003-05-27 09:30) [19]
> TrollXP
Да не за что) .. Носи не стаптывай !) ... Мля))))
← →
TrollXP (2003-06-02 17:15) [20]Народ! Ето опять я. У меня совсем крышак поехал.. Мне нужно, чтобы вместо n1, n2 и т.д. были другие имнеа. Допустим, как на футболе: название команды и очки. ПЛЗ!!!
ЗЫ: Совсем плохой стал..
← →
JohnJ (2003-06-02 17:38) [21]первый массив: n:array[1..22] of double;
n[1]:=1; n[2]:=0.5; n[3]:=12...
теперь, как упорядочить:
for i:=1 to 22 do
for j:=1 to 21 do
if n[j]<n[j+1] then begin
c:=n[j];
n[j]:=n[j+1];
n[j+1]:=c;
end;
Теперь массив упорядочен по убыванию (самое большое число в начале, самое маленькое - в конце). Если надо наоборот, смени знак в if-е.
создай второй массив, например NK:array[1.22] of string;
Это будет твой массив с названиями команд:
nk[1]:="команда1"; nk[2]:="команда2"; и т.д.
← →
TrollXP (2003-06-02 17:42) [22]Спасибо! Только я не понял куда девать nk[1], nk[2]!!
ЗЫ: Я сижу за компом почти круглые сутки. Мало ем и сплю... Простите за беспокойство. Но уж очень нужно.
← →
Anatoly Podgoretsky (2003-06-02 19:35) [23]Это болезнь, систематическое недоедание недосыпание.
Лекарство - больше есть и спать.
← →
ladybird (2003-06-02 19:39) [24]"Сортировка методом пузырька" - ставишь пузырь тому, кто знает - и все OK!
← →
TrollXP (2003-06-03 03:49) [25]2 ladybird
Чё-то я не понял.
← →
TrollXP (2003-06-03 03:50) [26]2 Anatoly Podgoretsky
Я бы с радостью!
← →
Rol (2003-06-03 06:27) [27]>TrollXP А ты на программиста учишься? На платном, поди, или в сельхозтехникуме... :)
← →
LexusR (2003-06-03 07:20) [28]>>Мне нужно, чтобы вместо n1, n2 и т.д. были другие имнеа. >>Допустим, как на футболе: название команды и очки. ПЛЗ!!!
по мотивам Digitman-а
procedure TForm1.Button1Click(Sender: TObject);
var
StringList: TStringList;
n1, n2, n3, n4 : Double;
s1, s2, s3, s4 : string;
function CompareProc(List: TStringList; Index1, Index2: Integer): Integer;
var
v1, v2: Double;
begin
with List do
begin
v1 := StrToFloat(Values[Names[Index1]]);
v2 := StrToFloat(Values[Names[Index2]]);
if v1 > v2 then
Result := -1
else if v1 < v2 then
Result := 1
else
Result := 0;
end;
end;
begin
n1:=1; n2:= 6; n3:=12; n4 := 0;
s1:="
← →
TrollXP (2003-06-03 16:01) [29]2 LexusR
Ето понятно, что надо определить имена. Но если одна команда обгонит другую?? То есть мне надо пркрепить очки к названию команды...
← →
Digitman (2003-06-03 16:16) [30]мда...
← →
NickBat (2003-06-03 16:16) [31]Батенька ты что таблицу футбольного чемпионата пишешь?
Так там эти данные надо еще и сохранять куда-нибудь.
В файл например, или БД.
← →
TrollXP (2003-06-03 16:21) [32]2 NickBat
Что-то вроде этого.
← →
NickBat (2003-06-03 16:23) [33]Я думаю стоит подружится с массивами - это минимум, а если программа обещает быть серьезной (в чем сомнение), то и БД.
Страницы: 1 вся ветка
Текущий архив: 2003.06.16;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.007 c