Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.54 MB
Время: 0.016 c
14-50515
reticon
2003-05-31 14:59
2003.06.16
Unix и C - первоапрельская шутка?


4-50559
lesa
2003-04-17 18:12
2003.06.16
Как программно удалить ярлык с рабочего стола?


1-50275
Paha
2003-06-04 14:15
2003.06.16
Help для Delphi 6


1-50325
super_alex
2003-06-03 14:22
2003.06.16
Максимальный размер TImage


1-50302
кто-то
2003-06-04 18:17
2003.06.16
Как встроить ActiveX в HTML?