IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> функция Todec, вопрос по ней, когда она в программу внедрена, дает ошибку при одном определенном условии
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский

Репутация: -  0  +


Есть функция ToDec (перевод из любой сист. счисления в 10ричную).
function ToDec(n:string; radix:longint):longint;
const
digit : string[16] = '0123456789ABCDEF';
var
m, i : longint;
begin
m:=0;
while n[1]='0' do
delete(n,1,1);

for i:=1 to length(n) do
m:=m*radix+pos(n[i],digit)-1;
ToDec:=m;
end;

По ней есть вопрос, когда она в программу внедрена. Ошибку дает, когда есть одно определенное условие.
Думаю, у знающего человека займет не более 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
if n[i]=0 then не удалять

я так понимаю, что если все элементы вектора равны 0, тогда не удалять?
или как все это реализовать)) запуталась.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Тогда вот так:
Код
while (n[1]='0') and (length(n)>1) do delete(n,1,1);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский

Репутация: -  0  +


Цитата(Malice @ 18.05.2006 20:57) *

Тогда вот так:
Код
while (n[1]='0') and (length(n)>1) do delete(n,1,1);



при этом условии программа ошибка не дает, но незультат ее НЕверен.
все же склоняюсь к тому, чтобы перед вайл было условие не удаления строки, если там все 0. Хотя, не знаю...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ну, тогда приводи код ПРОГРАММЫ, если нужна помощь... К процедуре перевода ToDec претензий быть больше не может, она будет работать...

Вопрос теперь в том, КАК ты ее вызываешь, и что делаешь ПЕРЕД вызовом...

Цитата
все же склоняюсь к тому, чтобы перед вайл было условие не удаления строки, если там все 0
А это без разницы: что '000' выдаст 0 в результате конвертации, что '0' выдаст тот же 0. А вот согласно логике твоей программы может потребоваться, чтобы '111' и '1111' выдавали разные результаты (если ты делаешь что-то типа хеша, например) - тогда такой подход в корне неверен...

Так что условие и программу - в студию smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский

Репутация: -  0  +


Цитата(volvo @ 18.05.2006 21:20) *

Так что условие и программу - в студию smile.gif

эм..она достаточно большая, из модулей состоит.

два сюда кину, которые взаимодействую, но они большие..звиняйте

" (Показать/Скрыть)


и второй модуль, кусочек

" (Показать/Скрыть)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Первое, что бросилось в глаза -
  For i := 1 to 8 do
Begin
If TestVector[i] = '2' then
TestVector[i] := '1'
Else
TestVector[i] := '1'; // Уверена, что не TestVector[i] := '0' ?
End;


А в остальном - присоедини архив с программой (только без EXE smile.gif ), так сложно что-то говорить. Надо видеть всю программу, а не ее куски.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Levitra 20 Mg 30 Tablet
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Comprar Viagra En Tenerife
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 155
Пол: Мужской

Репутация: -  0  +


Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. Online Casino Gaming Best Practices
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.01.2023 15:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name