| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Объединение нескольких чисел в одно |
| Автор: relok 15.11.2010, 22:15 |
| здравствуйте даны три интовых числа - к примеру 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 |
| Автор: bsa 15.11.2010, 22:59 | ||
| тебе нужно получить число или строку? Для строки все просто: sprintf(buffer, "%i%i%i", num1, num2, num3); Для числа сложней:
|
| Автор: relok 15.11.2010, 23:11 |
| ну это тоже не очень красиво просто реализовать можно многими способами а я хотел что-то красивое, может даже встроенное не очень понятно, что вы написали+) я сделал так 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) если нужно будет больше трех чисел, подогнать всё в фор не сложно думаю) но это не эстетично, как то по деревенски) |