![]() |
|
Модераторы: bsa |
![]()
|
|
| relok |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.11.2010 Репутация: нет Всего: нет |
здравствуйте
даны три интовых числа - к примеру 97 97 97 (в общем по аски 0...255) реально ли их как то объединить в 979797 (девятьсот семьдесят девять тысяч, семьсот девяносто семь) покрасивее? в голову приходит не очень красиво: берем первое число, считаем сколько знаков в остальных и умножаем первое на 10 ^ кол-во знаков 1. 97*10000=970000 2. берем второе число и умножаем на десять в степени количество знаков в третьем 97*100=9700 3. складываем получившиеся числа 970000 + 9700 + 97 = 979797 я бы погуглил, да не представляю как назвать это=) о. написал это и придумал такой вопрос: реально ли узнать, сколько знаков в числе(без проверок типа 0...9 10...99 100...255?) тогда всё проще : 99 + 98*10^(знаков(99)) + 97*10^(знаков(98)+знаков(99))=979899 Это сообщение отредактировал(а) relok - 15.11.2010, 22:20 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
тебе нужно получить число или строку?
Для строки все просто: sprintf(buffer, "%i%i%i", num1, num2, num3); Для числа сложней:
|
|||
|
||||
| relok |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.11.2010 Репутация: нет Всего: нет |
ну это тоже не очень красиво
просто реализовать можно многими способами а я хотел что-то красивое, может даже встроенное не очень понятно, что вы написали+) я сделал так int chislo(unsigned char ch) { int n=ch; if((n>=0)&(n<10)) return 1; if((n>9) &(n<100)) return 2; if((n>99)) return 3; } c=msg[0]+msg[1]*pow(10,chislo(msg[0]))+msg[2]*pow(10,(chislo(msg[1])+chislo(msg[0]))); 97 + 97 * 10^2 + 97 * 10^(2+2) если нужно будет больше трех чисел, подогнать всё в фор не сложно думаю) но это не эстетично, как то по деревенски) |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
так вроде чуть проще :
Добавлено @ 23:29 или if (res).. также если планируется "пристегнуть" к уже существующему числу .. т.е. для изначального int res = some_value; Добавлено через 8 минут и 39 секунд оберните в функцию принимающую массив и отдающую результат и будет не по деревенски Добавлено через 10 минут и 35 секунд или так : while(j<num[i]) j*=10; Это сообщение отредактировал(а) mes - 15.11.2010, 23:30 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |