Главная страница
    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.51 MB
Время: 0.01 c
14-50522
crash
2003-06-01 00:54
2003.06.16
mail-адрес borland a


1-50284
Zuvom
2003-06-04 02:28
2003.06.16
Компонент для работы с диском


9-50196
Demo2
2002-12-29 11:21
2003.06.16
Fog of War


1-50385
Tornado
2003-06-04 13:19
2003.06.16
Форма


14-50482
Доброжелатель
2003-05-30 10:30
2003.06.16
Атипичная пневмония





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский