|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите с алгоритмом
Здравствуйте, такая ситуация: есть в едите ключ суть в том что каждые две цифры ключа указывают на ячейку в матрице, например ключ: 13233141
здесь 1 - номер строки первого элемента, 3 - номер столбца первого элемента, 2 - номер строки второго элемента и т.д. Надо алгоритм для считывания этих координат и записи по ним определённых значений в матрицу, я такой алгоритм написал: Код:
L:=1; s:=edtKey.Text; While L<=Length(s) do begin i := StrToInt(s[L]); j := StrToInt(s[L+1]); Mas[i][j]:=1; L := L+2; end; Суть в том что матрица может быть размером больше 10 и координаты могут состоять из двух чисел, я придумал в ключе отмечать символом "*" (например 93*105*106) который будет давать знать программе что дальше находится многозначная цифра. Вот надо под это доработать алгоритм. Надеюсь на Вашу помощь. Пытаюсь придумать алгоритм но пока ничего толкового, сделал как-то так: Код:
L:=1; s:=edtKey.Text; While L<=Length(s) do begin if s[L] = '*' then begin i := StrToInt(s[L+1]+s[L+2]); if s[L+3] = '*' then j := StrToInt(s[L+4]+s[L+5]) else j := StrToInt(s[L+3]); end else i := StrToInt(s[L]); if s[L+1] = '*' then j := StrToInt(s[L+2]+s[L+3]) else j := StrToInt(s[L+1]); Mas[i][j]:=1; L := L+2; end; Последний раз редактировалось Petros9n, 30.04.2012 в 17:32. |
#2
|
||||
|
||||
А не проще взять строку из Edit-а и загрузить в StringList. В качестве разделителя указать свой символ.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Petros9n (30.04.2012)
|
#3
|
|||
|
|||
Через StringList получилось сделать, спасибо.
|
#4
|
||||
|
||||
Можно выдернуть из StringList-а, его алгоритм разбивки.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |