![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
neZvezda |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Женский Репутация: ![]() ![]() ![]() |
Есть функция 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 |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Тогда вот так:
Код while (n[1]='0') and (length(n)>1) do delete(n,1,1); |
neZvezda |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Женский Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Ну, тогда приводи код ПРОГРАММЫ, если нужна помощь... К процедуре перевода ToDec претензий быть больше не может, она будет работать...
Вопрос теперь в том, КАК ты ее вызываешь, и что делаешь ПЕРЕД вызовом... Цитата все же склоняюсь к тому, чтобы перед вайл было условие не удаления строки, если там все 0 А это без разницы: что '000' выдаст 0 в результате конвертации, что '0' выдаст тот же 0. А вот согласно логике твоей программы может потребоваться, чтобы '111' и '1111' выдавали разные результаты (если ты делаешь что-то типа хеша, например) - тогда такой подход в корне неверен...Так что условие и программу - в студию ![]() |
neZvezda |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Женский Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Первое, что бросилось в глаза -
For i := 1 to 8 do А в остальном - присоедини архив с программой (только без EXE ![]() |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 15:54 |