Цитата(Lapp @ 1.12.2007 23:02)
?????????????
Будь добр, подтверди свои слова программным кодом.
Прошу прошения, тут у меня произошел какой-то сбой.
Тем не менее, родолжаю утверждать, что именн способ через преобразование в строку и является единственно правильным.
В принципе можно оценить плюсы и минусы таких способов.
Плюсы "строки":
- делает именно то, что нужно. Т.е. запись соответствует условию задачи.
- текст короче. Соответственно, легче написание, отладка и сопровождение.
- не требует доказательства того, что "арифметический" вариант эквивалениен "переводу в строку". И, думаю, именно это является ОСНОВНЫМ преимуществом данного метода. Строгое математическое доказательство получится довольно объемным, причем его прийдется сначала провести разработчику, а затем КАЖДЫЙ РАЗ при смене того, кто будет осуществлять сопровождение кода.
Плюсы "арифметического" варианта:
- вычислительно менее ресурсоемок.
- легко обобщается на любую систему счисления.
В принципе у "арифметического" способа есть ОЧЕНЬ существенный недостаток - к нему неприменим один из основнях принципов ПРАВИЛЬНОГО программирования: "неправильный код должен выглядеть неправильно".
PS. Да, самое серьезное замечание против "строки" - трудность обобщения на случай другого основания. Правильный путь при этом окажется более ресурсоемким, чем в противном случае:
1. Написание процедуры перевода числа в строку в нужной (или произвольной) системе счисления.
2. Воспользоваться этой процедурой.
Примечание: отладку обеих частей производить, естественно, независимо.
PPS. Насчет "перекладывания на "готовые паскалевсекие процедуры":
Если мы в 16-разрядном BP делим longint на longint, неужели мы обязаны вместо оператора деления явно программировать целиком весь алгоритм деления в столбик?