Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
| neZvezda |
18.05.2006 20:45
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Женский Репутация: 0 |
Есть функция ToDec (перевод из любой сист. счисления в 10ричную).
function ToDec(n:string; radix:longint):longint; По ней есть вопрос, когда она в программу внедрена. Ошибку дает, когда есть одно определенное условие. Думаю, у знающего человека займет не более 10 минут. help есть вектор А и Б. Состоят из единиц и двоек. Заносятся в матрицу. Для этого идет перевод в двоичную систему, все 2ки из векторов заменяются на 1, 1цы из векторов - на 0. Далее при помощи функции ToDec производится преобразование в десятичное представление. Так вот, если имеется вектор, состоящий из единиц, 11111. Тогда при переводе в двоичное число, будет 00000. А строка программы while n[1]='0' do delete(n,1,1); из строки n удаляет один символ, начиная с первого. Если там все нули, тогда удаляет строку вобще всю! И идет ошибка в программе. перед while надо сделать условие? типа того for i:= 1 to 5 do begin я так понимаю, что если все элементы вектора равны 0, тогда не удалять? или как все это реализовать)) запуталась. |
| Malice |
18.05.2006 20:57
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Тогда вот так:
Код while (n[1]='0') and (length(n)>1) do delete(n,1,1); |
| neZvezda |
18.05.2006 21:08
Сообщение
#3
|
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Женский Репутация: 0 |
|
| volvo |
18.05.2006 21:20
Сообщение
#4
|
|
Гость |
Ну, тогда приводи код ПРОГРАММЫ, если нужна помощь... К процедуре перевода ToDec претензий быть больше не может, она будет работать...
Вопрос теперь в том, КАК ты ее вызываешь, и что делаешь ПЕРЕД вызовом... Цитата все же склоняюсь к тому, чтобы перед вайл было условие не удаления строки, если там все 0 А это без разницы: что '000' выдаст 0 в результате конвертации, что '0' выдаст тот же 0. А вот согласно логике твоей программы может потребоваться, чтобы '111' и '1111' выдавали разные результаты (если ты делаешь что-то типа хеша, например) - тогда такой подход в корне неверен...Так что условие и программу - в студию |
| neZvezda |
18.05.2006 21:36
Сообщение
#5
|
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Женский Репутация: 0 |
|
| volvo |
18.05.2006 23:46
Сообщение
#6
|
|
Гость |
Первое, что бросилось в глаза -
For i := 1 to 8 do А в остальном - присоедини архив с программой (только без EXE |
![]() ![]() |
|
Текстовая версия | 8.12.2025 13:30 |