Помогите решить задачу
Нужно написать программу, которая будет возводить в степень больше 20ой числа большего max_int, проблема состоит в том что, входящее число может быть разное а я не могу заранее создать массив подходящий для результата, знаю что это как-то делается в куче, но как не знаю подскажите пожалуйста!!!
|
Цитата:
Цитата Urann
а я не могу заранее создать массив подходящий для результата »
|
Сделай размер 150. Кто мешает?
Цитата:
Цитата Urann
знаю что это как-то делается в куче »
|
Длинная арифметика? (Интересно, есть асемблерная команда возведения в степень?)
|
lxa85, Да оно самое.
Но сделать большой размер массива от проблемы не избавит, а может даже и новых прибавит в некоторых случаях, хотя это может я ещё чего-то недопонимаю.
А насчёт ассемблерной команды, я не знаю, мне нужно и хотелось бы на С++ написать, можете мне в этом помочь? если что могу маленькую заготовку для начала выложить!
Alan85, спасибо
|
Цитата:
Цитата Urann
можете мне в этом помочь? »
|
к сожаленью нет. Т.к. программирование сейчас шагнуло вперед, а т.к. оно не является ни моей работой, и очень слабым хобби, то я боюсь что я больше испорчу, нежели помогу.
2ое, отсутствие времени. Поэтому только так: общим направлением движения.
|
Alan85, извините я не в правилах хорошего тона может быть, на форумах очень редко бываю не знаю что да как, вашу статью я прочитал, да эта девушка говорила про то что здесь описывал я :)
Но алгоритм построения этого числа это же лакомый кусочек, я уже придумал как буду решать эту задачу, мне нужно только неисчерпаемый источник памяти куда я буду записывать ответ :unsure:
|
Цитата:
Цитата Urann
Но алгоритм построения этого числа это же лакомый кусочек, я уже придумал как буду решать эту задачу, мне нужно только неисчерпаемый источник памяти куда я буду записывать ответ »
|
Террабайтный винт поможет. А вообще давай подсчитаем. Допустим максимальная степень - 128, максимальное число - 2^64, тогда понадобится количество байт log(2^64^128, 2^8) = 128*64/8 = 2^(3+7) = 1024 - в оперативке легко поместится.
|
pva, я понимаю что в оперативке поместица :)
я вот только не знаю как мне в оперативку записывать данные, прямым вписанием данных по неизвестному адрессу может привести к удалению нужной информации или просто доступа к памяти не будет ну это понятно думаю не стоит объяснять, специально для таких вещей есть функции в языках программирования new или что то типа того но я не знаю как это делать ну не врубаюсь и сё тут :)
А под неисчерпаемым источником памяти я подразумеваю ту самую ОП, т.к. потому что если процессора хватит на то чтоб посчитать большие числа, то его может не хватить чтоб записать в память хотя что-то мне нутром подсказывает что тут вмешаются EMM386.exe и AIMEM.SYS но каким образом этого я тоже ещё пока не знаю :)
|
а... разве не линейная модель памяти? если делаешь на с++, то есть замечательный шаблон vector<>, который берёт все заботы с памятью на себя. В паскале - динамический массив
|
Спасибо думаю что теперь мне стало всё понятно, как это делать!
|
Raskolbasnik |
14-05-2013 11:14 2149800 |
Прошу помощи в решении задачи!!
Создать класс окружность, чтобы он был наследником класса точка. Наследовал его поля и методы.
|
Время: 15:36.
© OSzone.net 2001-