![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Помогите написать скрипт. Объясню, что именно мне нужно получить.
Есть некая база городов. Расстояние между ними известно. Есть два раскрывающихся списка. Открываешь первый список и выбираешь город. Открываешь второй список и выбираешь город. Нажмаешь кнопку "Рассчитать" и расстояние показывается в label1=) Думаю это элементарно, но я уже все забыл и прошу помощи в решении этой простой задачки. Спасибо. |
#2
|
||||
|
||||
![]() Ну как известно из города А в город Я можно попасть разными путями.
Нужно собирать действующий граф из тех городов, которые лежат между А и Я. И смотреть расстояние (я так понимаю наименьшее) А если решать задачу, сидя на цистерне с бензином, то выглядеть это будет простым циклическим перебором всех городов. Только есть вероятность приехать в город-тупик, который не связан с другими. |
#3
|
||||
|
||||
![]() label1.caption := StrToFloat(ComboBox2.text) - StrToFloat(ComboBox1.text);
Как ты сам не мог додуматся? |
#4
|
||||
|
||||
![]() FacePalm.
Ответом будет являться ошибка: Код:
E2010 Incompatible types: 'string' and 'Extended' Но даже если: Код:
Caption := FloatToStr(StrToFloat(ComboBox1.Text) - StrToFloat(ComboBox2.Text)); Код:
First chance exception at $75AC812F. message ''СаратовМосква' is not a valid floating point value'. Код:
StrToFloatDef(string,default_value); Читайте внимательнее задачи =\ Последний раз редактировалось Uniq!, 24.09.2013 в 12:26. |
#5
|
||||
|
||||
![]() Код:
if (ComboBox1.text = "Масква") then gorod1 := 100; if (ComboBox2.text = "Саратов") then gorod2 := 300; Label1.Caption := IntToStr(gorod2 - gorod1) Так должно работать |
#6
|
|||
|
|||
![]() Как вы представляете себе свой код, когда там будет 50 городов?
|
#7
|
||||
|
||||
![]() Где хранятся данные? и в каком виде?
|
#8
|
||||
|
||||
![]() Код:
if ((ComboBox1.text = "Масква") or (ComboBox2.text = "Масква")) then begin gorod1 := 100; a := 1; end; if ((ComboBox1.text = "Саратов") or (ComboBox2.text = "Саратов")) then begin gorod2 := 300; a := 2; end; if ((ComboBox1.text = "Питер") or (ComboBox2.text = "Питер")) then begin gorod2 := 400; a := 3; end; if (a = 1) then Label1.Caption := IntToStr(gorod2 - gorod1); if (a = 2) then Label1.Caption := IntToStr(gorod3 - gorod2); if (a = 3) then Label1.Caption := IntToStr(gorod4 - gorod3); Ну дальше сами... |
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
junk1114 (24.09.2013)
|