|
|
|
Как вводить огромные числа за границами int-ов
|
|||
|---|---|---|---|
|
#18+
Уже не первый день думаю над этим...скажем человек ввел в черном консольном приложении такое: 54752485742987523987535449523345 И каждая цифорка этого числа должна войти в какой-то там массив..еслиб была бы строка символьная, то без проблем...(к примеру get-ом в cin).. Но для чисел именно, не знаю как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 20:42 |
|
||
|
Как вводить огромные числа за границами int-ов
|
|||
|---|---|---|---|
|
#18+
Да, еще одно... Массив там какой-то, типа каждая цифра этого числа в один элемент массива..начиная с 0 и до конца чтом это число было в массиве. Может быть возможно как-то из потока брать только определенное количество байтов..или может еще лучше есть способ.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 20:45 |
|
||
|
Как вводить огромные числа за границами int-ов
|
|||
|---|---|---|---|
|
#18+
Написать класс BigInteger, реализующий длинную арифметику, для которого перегрузить операции operator >>(istream&, BigInteger&), operator <<(ostream&, BigInteger&), и естесвенно, +, -, *, /, % и т.д. --- "Raffiniert ist der Herr Gott, aber boshaft ist Er nicht." Albert Einstein ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 20:47 |
|
||
|
Как вводить огромные числа за границами int-ов
|
|||
|---|---|---|---|
|
#18+
хм...Ну и что? Всмысле, перегружу, но потом все равно ведь тот же поток, если не ошибаюсь..все равно действия с потоком..поток взял огромное число54752485742987523987535449523345 а как из этого потока каждую цифру этого числа засунуть в массив?..вообще как взять это число?..поток возьмет, но от него как получить...мне эту функцию написать, а уж в перегрузку ввода-вывода я ее потом засунуть без проблем наверное смогу...мда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 22:38 |
|
||
|
Как вводить огромные числа за границами int-ов
|
|||
|---|---|---|---|
|
#18+
Сначала у тебя это число будет в виде текста, так? Ну вот как текст его и расшифровываешь в свой собственный массив. Массив может быть любым, проще всего, наверное, один десятичный разряд исходного числа сохранять в одно-байтовой ячейке массива. Арифметику делаешь соотвественно сам - сложение будет значит выглядеть как сложение двух ячеек разных массивов, если результат больше десятки - сам взводишь флаг переноса и переходишь к следующему разряду. Ну и так далее. Если не хочешь тратить память (один десятичный разряд - один байт памяти), можешь вместо десятичной использовать 256-и ричную систему, или хотя бы шестнадцатиричную :) Можно хранить в одном байте два десятичных разряда, так называемая BCD система, кстати процессор имеет даже встроенные команды для работы с ней. В общем, все очень просто :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 23:08 |
|
||
|
Как вводить огромные числа за границами int-ов
|
|||
|---|---|---|---|
|
#18+
Hint: как ввести в массив из потока: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. "Raffiniert ist der Herr Gott, aber boshaft ist Er nicht." Albert Einstein ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 09:55 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33068289&tid=2033298]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
155ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 464ms |

| 0 / 0 |
