разложение числа на разряды
-
electronic255
- Встал на лапы
- Сообщения: 81
- Зарегистрирован: Вт окт 05, 2010 20:57:19
разложение числа на разряды
Как разложить число например (4568) на разряды 4 5 6 8? Используя только сложение и вычитание .Функция должна быть универсальной,даем ей любое число и получаем количество тысяч ,сотен ,десятков и единиц. Пишу на Си. Если такая тема есть,просьба модераторов не материться,поисковиком не нашел,а прочитать 114 страниц терпения не хватит.
- Axon
- Нашел транзистор. Понюхал.
- Сообщения: 152
- Зарегистрирован: Вс дек 23, 2007 20:16:58
- Откуда: Днепропетровск
- Контактная информация:
Re: разложение числа на разряды
Отнимаешь по 1000 - считаешь сколько отнялось без перехода через ноль, потом по 100, 10 и по 1.
Re: разложение числа на разряды
Для начала необходимо реализовать 2 базовые ф-и / и % деление без остатка и остаток от деления.
50/10 по десятичной системе.
k=52;
cel=0;
while (k>=10){cel++; k-=10;}
получим cel целых k десятых все просто.
k>=100 это делим на сто с остатком от 0 до 99
50/10 по десятичной системе.
k=52;
cel=0;
while (k>=10){cel++; k-=10;}
получим cel целых k десятых все просто.
k>=100 это делим на сто с остатком от 0 до 99
в спорах рождается ИСТИНА [AND] flud.
-
electronic255
- Встал на лапы
- Сообщения: 81
- Зарегистрирован: Вт окт 05, 2010 20:57:19
Re: разложение числа на разряды
demson писал(а):Для начала необходимо реализовать 2 базовые ф-и / и % деление без остатка и остаток от деления.
50/10 по десятичной системе.
k=52;
cel=0;
while (k>=10){cel++; k-=10;}
получим cel целых k десятых все просто.
k>=100 это делим на сто с остатком от 0 до 99
не подходит - можно использовать только сложение,вычитание и сравнение
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: разложение числа на разряды
electronic255 писал(а):не подходит - можно использовать только сложение,вычитание и сравнение
А в приведенном demsonом коде есть другие операции?
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: разложение числа на разряды
Engineer_Keen, просто топикстартер читает, видимо, исключительно по диагонали.
Код: Выделить всё
unsigned long bin_bcd(unsigned short a)
{
//структура для функции bin_bcd 0-9999
struct
{
unsigned char tens,hundreds,thousands;
unsigned short units;
}bcd;
bcd.tens=0x30;
bcd.hundreds=0x30;
bcd.thousands=0x30;
bcd.units=a;
if(bcd.units>=1000)
{
while (bcd.units>=1000)
{
bcd.units-=1000;
bcd.thousands++;
}
}
if(bcd.units>=100)
{
while (bcd.units>=100)
{
bcd.units-=100;
bcd.hundreds++;
}
}
if(bcd.units>=10)
{
while (bcd.units>=10)
{
bcd.units-=10;
bcd.tens++;
}
}
bcd.units+=0x0030;
return((long)bcd.thousands<<24|(long)bcd.hundreds<<16|bcd.tens<<8|bcd.units);
}Ставим плюсы: )