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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Суть работы, функция FromDec ToDec
сообщение
Сообщение #1





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

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


Люди помогите, очень нужно подробное описание этих функций.
Точнее как она работает и значения всех переменных.

function FromDec(n, radix:longint):string;
var
s: String;
const
digit: string[16]='0123456789ABCDEF';
begin
s:='';
repeat
s:=digit[(n mod radix)+1]+s;
n:=n div radix;
until n=0;
FromDec:=s;
end;

n - это переменная или строка
mod - остаток
radix - та с/с в которую мы переводим

s:=digit[(n mod radix)+1]+s; - что происходит в данном выражении?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





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

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


C s:=digit[(n mod radix)+1]+s; все понятно. спс volvo.
что касается зачем:
Я понимаю что эти функции предназначены для перевода чисел из 1-й с/с в другую, и что они прекрасно работают.
Но препод не станет принимать программу если я буду не в силах ему обьяснить принцип ее работы.

Еще если не сложно мне бы хотелось узнать что происходит в данном условии и выражении:
while (n[1]='0') and (length(n) > 1) do delete(n,1,1);
for i:=1 to length(n) do m:=m*radix+pos(n[i],digit)-1;
(функция ToDec)

p.s. заранее большое спасибо.

Сообщение отредактировано: Taur -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


В этой строчке:
while (n[1]='0') and (length(n) > 1) do delete(n,1,1);
- убираются левые нули. То есть число 000123 приводится к виду 123.

Вторая строчка:
 for i:=1 to length(n) do m:=m*radix+pos(n[i],digit)-1;

- это по сути реализация определения записи в n-ричной СС.
На примере десятичной (то есть radix=10):
a4a3a2a1a0 = a4*10000 + a3*1000 + a2*100 + a1*10 + a0
например:
620722 = 6*10000 + 2*1000 + 0*100 + 7*10 + 2
Если сгруппировать вот так:
620722 = ((((6*10) + 2)*10 + 0)*10 + 7)*10 + 2
- то получится как раз то, что написано в той строчке.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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