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

> Деление числа. (a/b)
сообщение
Сообщение #1


Бывалый
***

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

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


Меня затронула одна тема, с которой я ни как не могу справиться. Это деление чисел.
Меня интересует деление одного числа на другое если эти числа находятся в массивах (в каждом элементе одна цифра) или в строках. К примеру массив A{1,1,1,1,1,1}, массив B {1,1,1}. Или в тех же самых строках s1='111111', s2='111';

Расскажите алгоритм по которому можно данные числа разделить в самих массивах (строках).
(Перевод числа в переменную целочисленного типа (longint, integer) не предлагать, так как я хочу использовать длинную арифметику.)


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


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

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

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


Если ты хочешь делить непосредственно в той системе счисления, в которой записаны числа (типа в десятичной), то в самом первом приближении деление реализуется по алгоритму, который ты знаешь с начальной школы: деление "уголком". Для этого (если ты еще помнишь, что проходил в первом классе)) нужно уметь умножать и вычитать, а для умножения (столбиком) нужно сложение. Так что сначала тебе придется реализовать сложение, вычитание и умножение. Дальше действуй непосредственно по агоритму "уголка": бери первые разряды от делимого, делитель умножай последовательно на числа, начиная с 1 и до основания системы (в десятичном случае от 1 до 10) пока результат не превысит взятый кусок делимого. Тогда к результату приписываешь цифру, на единицу меньшую множителя. Вычитаешь из этого куска произведение цифры на делитель, потом "сносишь цифру" (приписываешь справа) из делимого и повторяешь процесс, пока цифр для сноса не останется...

Это сильно неформальное описание, нуждающееся в доработке и оптимизации, но общий принцип такой. Кстати, тут есть некоторое пересечение с параллельной темой (про перестановки). Дело в том, что деление - это обратная операция к умножению. То есть, разделить a на b - это значит найти корень уравнения b*x=a. И если в операции умножения все определено (возьми a кучек по b предметов и пересчитай), то в делении приходится подбирать ответ (в уголке - брать по 4, по 5...) И это отражается на алгоритме (перебор всех цифр). Это чисто философское замечание, не особо заморачивайся, просто подумай)).


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

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


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

 





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