![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 12.01.2015
Сообщений: 5
|
![]()
Программа для перевода из 10-ой системы счисления в 14-ую и обратно.
Может кто объяснить как работает программа (поподробней если можно)? Например: 1) Водим число 13 в десятичной системе счисления, что с ним происходит по ходу программы и как получается "D". 2) Водим число "DD", как получается 195. Код:
|
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
правила перевода из десятичной системы счисления (СС) в любую другую и обратное преобразование выполняются по стандартной схеме, которая не зависит от основания СС. Алгорим расписан буквально в любом школьном букваре по информатике (и не только так). когда переводим из 10-й СС, то поступаем так: в цикле: берём остаток от целочисленного деления числа на основание_новой_СС и записываем остатки справа налево. теперь число целочисленно делим на основание_новой_СС выполняем цикл пока число после деления на станет равно нулю. когда переводим число из НЕДЕСЯТИЧНОЙ СС в десятичную, то поступаем так: вычисляем вес каждого разряда справа налево (самый младший == правый разряд) имеет вес равный 1 (это переменная K). каждый следующий разряд это предыдущий умноженый на основанием системы счисления (K := K * 14) десятичное число можно получить, если сложить цифры, записанные в каждом из разрядов, умноженные на их вес. например, берём число DD записанное в 14-ной СС. K равно 1. десятичное число в переменной F (для накопления суммы) пока равно нулю. младший разряд "D" (по таблице это число 13) умножаем на K получаем F:=F+C[J]*K ==> F := 0 + 13*1 => F равно 13 теперь вычисляем вес следующего разряда K := K * 14 => K := 1 * 14 => K равно 14 следующия разряд числа, это тоже "D" (по таблице это число 13), умножаем на K F:=F+C[J]*K ==> F := 13 + 13*14 => 13 + 182 => F равно 195 больше разрядов нет, значит, десятичное число равно 195 Если что-то непонятно - спрашивайте. Только, пожалуйста, поконкретней. p.s. программа написана не очень оптимально, можно без вложенных циклов обойтись... |
|
![]() |
![]() |
![]() |
#3 | |
Новичок
Джуниор
Регистрация: 12.01.2015
Сообщений: 5
|
![]() Цитата:
G:=R[F mod 14+1]+G; Почему мы делим на 15, а не на 14? Последний раз редактировалось crazyMYXA; 14.01.2015 в 13:44. |
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Делим на 14 и к результату 1
F mod 14+1 <=> (F mod 14)+1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Аватар, точно объяснил.
ещё поясню, почему добавляем единичку. Дело в том, что R - это строка: Цитата:
Поэтому, если мы получили остаток 0 (ноль), нам нужно взять 1-й символ строки R[1] ('0') Если мы получили остаток 13, нам нужно взять 14-й элемент строки (R[14] = 'D') |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
delphi 7 вопросы | anastassia | Помощь студентам | 3 | 24.03.2015 16:38 |
вопросы по delphi | Julia21 | Помощь студентам | 0 | 24.06.2013 00:23 |
Automate - вопросы по программе... | Demon83ad | Софт | 1 | 07.10.2011 17:41 |
Вопросы по Delphi | Dinkall | Помощь студентам | 1 | 08.09.2010 19:01 |
С++ и Delphi. Вопросы | UnD)eaD)Snake | Общие вопросы C/C++ | 3 | 21.08.2007 20:11 |