Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сколько цифр в числе, как узнать 
V
    Опции темы
CrasyMen
Дата 8.5.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: нет
Всего: 3



как узнать сколько цифр в числе?
например: число 10000   - 5 цифр


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
_hunter
Дата 8.5.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



дели число на 10 пока результат > 1 -- получиш чсло знаков - 1.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Klin
Дата 8.5.2007, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Ну или если извращаться то можно так:
Код

 int x = 10000;
 IntToStr(x).Length();



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
CrasyMen
Дата 8.5.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: нет
Всего: 3



Klin,  Спасибо. Этот способ лучше предыдущего (имхо).


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
fish9370
Дата 8.5.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Цитата(CrasyMen @ 8.5.2007,  20:00)
Klin,  Спасибо. Этот способ лучше предыдущего (имхо).

несмотря на то что, этот способ проще, я бы предпочел первый вариант - он быстрее.. и в нем нет привязки к VCL..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
CrasyMen
Дата 8.5.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: нет
Всего: 3



Цитата(fish9370 @  8.5.2007,  20:12 Найти цитируемый пост)
несмотря на то что, этот способ проще

я догадался, просто не хочу усложнять себе жизнь. Для курсовой сойдет. 


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
Voldemar2004
Дата 8.5.2007, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 1
Всего: 23



Код
// Функция подсчета количества цифр (проверка на цифровой символ)

#include <string.h>     // strlen()
#include <ctype.h>      // isdigit()

unsigned long NumberCount(char* Text);

unsigned long NumberCount(char* Text)
{

unsigned long Counter = 0;

        for(unsigned long i=0; i<strlen(Text); ++i)

          if ( isdigit(Text[i]) ) ++Counter;

return Counter;

}
Или так:
Код

int Num_Count(int a);

int Num_Count(int a)
{

int f;
f=0;
        do
        {
         a/=10;
         f++;
        }
        while(a);

return f;
}



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Klin
Дата 8.5.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Цитата(CrasyMen @  8.5.2007,  21:00 Найти цитируемый пост)
Klin,  Спасибо. Этот способ лучше предыдущего (имхо). 

Не лучше, а легче. 
_hunter и Voldemar2004, предложили более правильный путь решения, поскольку в моем случае идет преобразование типа, а у них лишь работа с ним.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Voldemar2004
Дата 8.5.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 1
Всего: 23



Цитата(fish9370 @  8.5.2007,  21:12 Найти цитируемый пост)
нем нет привязки к VCL..
И соответственно будет работать везде.
Цитата(CrasyMen @  8.5.2007,  21:17 Найти цитируемый пост)
 не хочу усложнять себе жизнь. Для курсовой сойдет. 
Но потом будет легче, понимание приходит не сразу...
Цитата(CrasyMen @  8.5.2007,  21:00 Найти цитируемый пост)
Этот способ лучше предыдущего (имхо).
опять же привязка к VCL...



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Жуть
Дата 9.5.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 27.6.2006

Репутация: нет
Всего: нет



а что если посчитать десятичный логарифм?
Код

int DigitsCount(int value)
{
    if ( !value )      //обработка 0
        return 1;

    int add = 1;
    if (value < 0)
    {
        value = abs(value);
    }
    return log10(double(value)) + add;
}


Это сообщение отредактировал(а) Жуть - 9.5.2007, 11:36
PM MAIL   Вверх
Voldemar2004
Дата 9.5.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 1
Всего: 23



Жуть, оригинально smile  smile  smile , только лишний раз вызывать функцию логарифма ?


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Klin
Дата 9.5.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Цитата(Жуть @  9.5.2007,  12:34 Найти цитируемый пост)
а что если посчитать десятичный логарифм?

Зачем так усложнять? Самый простой способ - это деление на 10.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Жуть
Дата 9.5.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 27.6.2006

Репутация: нет
Всего: нет



Цитата(Voldemar2004 @  9.5.2007,  11:43 Найти цитируемый пост)
только лишний раз вызывать функцию логарифма ?

Цитата(Klin @  9.5.2007,  12:01 Найти цитируемый пост)
Самый простой способ - это деление на 10.

Я просто предложил альтернативу...

Продолжая оригинальничать (реализация для машин с 32битным int, оптимизация в сторону меньших чисел):
Код
int DigitsCount(int value)
{
    if (value < 0)
        value = abs(value);
    if (value < 10)
        return 1;
    else
    if ( value < 100 ) 
        return 2;
    else
    if (value < 1000 )
        return 3;
    else
    if (value < 10000 )
        return 4;
    else
    if (value < 100000 )
        return 5;
    else
    if (value < 1000000 )
        return 6;
    else
    if (value < 10000000 )
        return 7;
    else
    if (value < 100000000 )
        return 8;
    else
    if (value < 1000000000 )
        return 9;
    else
    if (value < 10000000000 )
        return 10;
    else
        return 11;
}

 smile 

Это сообщение отредактировал(а) Жуть - 9.5.2007, 12:35
PM MAIL   Вверх
fish9370
Дата 9.5.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



жуть, что-то тебя понесло сказал для 32битных int, а сам попетлял в дебри.. что это за 32битный int такой 10000000000 ?
по-моему ты гонишь, тут парни давно правильное решение дали.. а ты предлагаешь что-то совсем бредовое..  smile 


--------------------
undefined
PM MAIL WWW ICQ   Вверх
Klin
Дата 9.5.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Жуть, если вы всегда так оригинальны, вы очень точно подобрали ник. smile


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.