Отговори на тема  [ 6 мнения ] 
извличане на цифри от число 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пет Окт 27, 2006 6:23 pm
Мнения: 162
Местоположение: Севлиево
Мнение извличане на цифри от число
Здравейте !
Налага ми се да изведа на 3 седем сигментни индикатора получено число от дадено изчисление (примерно 123).
Индикацията е динамична и за съжаление цифрите на числото се извеждат една по една :( Но как става на С?


Нед Фев 17, 2008 11:35 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Ами най-тъпо и разточително става с хвърлянето му в стрингов масив с sprintf... вероятно има и по-елегантни начини но в неделя сутринта ;)


Нед Фев 17, 2008 11:43 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Вто Окт 03, 2006 11:58 am
Мнения: 924
Местоположение: Ботевград
Мнение 
Погледни функцията DIV() в хелпа


Requires:
#include <STDLIB.H>

Examples:
div_t idiv;
ldiv_t lidiv;

idiv=div(3,2); // idiv will contain quot=1 and rem=1
lidiv=ldiv(300,250); //lidiv will contain quot=1 and rem=50


Нед Фев 17, 2008 5:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Код:
int num;
int d[3];

// ...

for ( ; ; ) {
    num = ..........;    // число за показване

    d[0] = num % 10;    // най-малозначна цифра, 10^0
    num /= 10;
    d[1] = num % 10;    // 10^1
    num /= 10;
    d[2] = num % 10;    // 10^2

    // ...
}


Ако не схващаш идеята, значи си проспал младините твърде лошо.
При желание за база различна от 10 - очевидно е какво се променя.
Ако пък те избива на оптимизиране - виж библиотечната функция div() която съчетава деление/модул.

При бол памет в контролера може да минеш и кротко със:
Код:
int num;
char d[4];

// ...

snprintf (d, 4, "%u", num);


Нед Фев 17, 2008 5:41 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пет Окт 27, 2006 6:23 pm
Мнения: 162
Местоположение: Севлиево
Мнение 
[quote="woody"]
Код:
int num;
int d[3];

// ...

for ( ; ; ) {
    num = ..........;    // число за показване

    d[0] = num % 10;    // най-малозначна цифра, 10^0
    num /= 10;
    d[1] = num % 10;    // 10^1
    num /= 10;
    d[2] = num % 10;    // 10^2

    // ...
}


Супер !
Къде беше до сега , че цял ден се мъча като грешен дявол :)
Мерси много това ми реши проблема !!!
Имаш една виртуална бира ;)


Нед Фев 17, 2008 6:46 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
mash написа:
Къде беше до сега , че цял ден се мъча като грешен дявол :)


Кацнах преди малко на родна земя. :D


Нед Фев 17, 2008 6:54 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 6 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни