Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с int / float: 
:(
    Опции темы
intel
Дата 28.10.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток

у меня пара вопросов по работе с int / float:

1. есть ли функция для определения длины int-числа? 
2. можно ли както "выбрать" определённый кусок из int'а?  

Пример:
Код


int GetPart(int myInt, int begin, int count);

int number = 123456;
int part = GetPart(number, 0, 3);

cout<<part;

//Вывод;

1234



Спасибо
PM MAIL   Вверх
under_sun
Дата 28.10.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



1,2 - нет
Преобразуй число в строку, и no problem.
--------------------
TMTOWTDI
PM MAIL ICQ   Вверх
archimed7592
Дата 28.10.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Цитата(intel @  28.10.2007,  19:17 Найти цитируемый пост)
1. есть ли функция для определения длины int-числа? 

Код

int intlen(int value)
{
    int result = 1;
    while (i > 1)
    {
        value /= 10;
        ++result;
    }
}


Цитата(intel @  28.10.2007,  19:17 Найти цитируемый пост)
2. можно ли както "выбрать" определённый кусок из int'а?  

Аналогичными операциями деления и взятия остатка от деления(%) делаешь любую выборку из числа. Хоть 1 3 5-ое.

Добавлено через 1 минуту и 6 секунд
Цитата(under_sun @  28.10.2007,  20:08 Найти цитируемый пост)
Преобразуй число в строку, и no problem. 

Тоже вариант... Думаю, не менее медленный, чем ручная обработка.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bsa
Дата 29.10.2007, 14:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Думаю, что если воспользоваться функцией log10, можно получить тоже самое, только быстрей:
Код
result = (int)log10(n);

Кстати, получить часть числа можно. Но лучше задавать разряды от конца - не придется вычислять количество десятичных разрядов в числе. В этом случае ответ на второй вопрос будет выглядеть так:
Код
const int begin = 6, end = 3;
const int n = 1234567;
int result = (n % (int)pow(10, begin)) / (int)pow(10, end);
assert(result == 234);

PM   Вверх
archimed7592
Дата 29.10.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Цитата(bsa @  29.10.2007,  14:43 Найти цитируемый пост)
Думаю, что если воспользоваться функцией log10, можно получить тоже самое, только быстрей:

Гы-гы... Забыл про такую замечательную мат. ф-цию smile.

Добавлено через 24 секунды
Только c-style cast к int'у не нужен... ;-)


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bsa
Дата 29.10.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(archimed7592 @ 29.10.2007,  14:59)
Добавлено @ 14:59
Только c-style cast к int'у не нужен... ;-)

Сорри. Не обратил внимание на то, что это на C++.  smile 
PM   Вверх
bns
Дата 29.10.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(bsa @  29.10.2007,  14:43 Найти цитируемый пост)
Думаю, что если воспользоваться функцией log10, можно получить тоже самое, только быстрей:
Выделить всёкод C++
1:
    
result = (int)log10(n);


Я бы не спешил говорить что этот код быстрее smile

Это сообщение отредактировал(а) bns - 29.10.2007, 16:48
PM MAIL   Вверх
bsa
Дата 29.10.2007, 20:34 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(bns @ 29.10.2007,  16:47)
Цитата(bsa @  29.10.2007,  14:43 Найти цитируемый пост)
Думаю, что если воспользоваться функцией log10, можно получить тоже самое, только быстрей:
Выделить всёкод C++
1:
    
result = (int)log10(n);


Я бы не спешил говорить что этот код быстрее smile

А ты проверь. Естественно, это стоит делать не на BC++ 3.1 с выключенной поддержкой сопроцессора, а на чем-нибудь современном.
PM   Вверх
Ln78
Дата 29.10.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



bsa, так относительно недавно уже проверяли. В этом топике
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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