![]() |
Модераторы: volvo877, Snowy, MetalFan |
![]() ![]() ![]() |
|
Рыська |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.7.2005 Где: Питер Репутация: нет Всего: нет |
Здравствуйте, я практически полный чайник в программировании
![]() |
|||
|
||||
Romtek |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 7.12.2004 Где: Холон Репутация: нет Всего: 4 |
Использовать оверлеи и дополнительную память EMS, XMS.
А лучше всего - оптимизировать потребление памяти. GetMem/FreeMem. --------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр. |
|||
|
||||
vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: нет Всего: 17 |
Рыська Уточни что делает программа и на что именно расходуется и для чего не хватает памяти - вариантов решений может быть много
-------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
точно ... а ешё лудше выложи исходник программы ))))
|
|||
|
||||
Рыська |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.7.2005 Где: Питер Репутация: нет Всего: нет |
вообщем просто надо вывести на экран число 2^500... вот и все,
выглядит это число так: 3273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376 но паскаль мне выводит его только до 17 знака... ![]() |
|||
|
||||
vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: нет Всего: 17 |
Вообщем у тебя здесь проблемы спамятью вообще нет
Просто чисел такой разрядности не поддерживает ни один из стандартных типов переменных Кокретно решение приводить сейчас нет времени но подход примерно следующий Тебе нужно найти алгоритмы умножений через сложения (как строятся микропрограммы для реализации умножений) и поэтапно их реализовывая ты будеш получать следующие цифры своего числа и выводить их Вообщем либо в поисковик либо в 'Алгоритмы' Это сообщение отредактировал(а) vadims - 11.7.2005, 15:41 -------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
Рыська |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.7.2005 Где: Питер Репутация: нет Всего: нет |
vadims, спасибо большое=)
|
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
Рыська
Я на первом курсе сдавал подобную задачку, только там надо было посчитать факториал большого числа. Вот исходник (думаю ты сможешь разобраться и заменить факториал на 2^n):
Константа predel если мне не изменят память отвечает за максимальное количество цифр в результате. |
|||
|
||||
Romtek |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 7.12.2004 Где: Холон Репутация: нет Всего: 4 |
Это задача на длинную арифметику. Поиши в поисковике.
--------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр. |
|||
|
||||
xibyte |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.7.2005 Репутация: нет Всего: нет |
Смысл здесь в следующем. Нужен массив каждый элемент которого, соответствует разряду числа, которое должно в итоге получиться. Например число 143 можно представить следующим образом через массив m
m[1]=3 // самый младший разряд m[2]=4 m[3]=1 // самый старший разряд Для наглядного примера возведем 2 в 5 степень. Естевственно, что нам нужно 5 раз умножить двойку саму на себя. Т.е. 2^5 = 2*2*2*2*2 = 1*2*2*2*2*2 .Создаем цикл, который будет этим заниматься. Только он будет поочередно умножать каждый разряд на двойку. На первой итерации будем умножать 1*2 следующим образом m[1]=1 * 2 = 2 m[2]=0 * 2 = 0 m[3]=0 * 2 = 0 На следующей итерации умножаем полученное число 2 опять на 2. Уже получаем 2^2 = 4 m[1]=2 * 2 = 4 m[2]=0 * 2 = 0 m[3]=0 * 2 = 0 Дальше также, получаем 2^3 = 8 m[1]=4 * 2 = 8 m[2]=0 * 2 = 0 m[3]=0 * 2 = 0 А вот дальше ИНТЕРЕСНЕЕ! Умножаем также каждый разряд на двойку m[1]=8 * 2 = 16 m[2]=0 * 2 = 0 m[3]=0 * 2 = 0 Первый элемент массива(то есть самый младший разряд) стал равен 16. Такого по определинию быть не может, т.к. разряд - это цифра. Это говорит нам о том, что нужно увеличть следующий разряд. Расскладываем число 16 = 1*10 + 6. В этом разряде мы должны оставить цифру 6. А единицу прибавляем к следующему более старшему разряду. В алгоритме будем находить эти числа следующим образом Шестерка - это результат целочисленного деления 16 на 10 (1 = 16 div 10), а шестерка это остаток от деления 16 на 10(6=16 mod 10). Получаем m[1]=8 * 2 = 6 m[2]=0 * 2 = 0+1 m[3]=0 * 2 = 0 Получили число 16=2^4 Дальше также умножаем каждый разряд на 2 m[1]=6 * 2 = 12 m[2]=1 * 2 = 2 m[3]=0 * 2 = 0 опять в первом разряде опять непорядок, опять расскладываем 12 на еденицу и двойку. Двойку оставляем в первом разряде, а еденицу прибавляем к более старшему. Получаем m[1]=6 * 2 = 2 = 2 m[2]=1 * 2 = 2+1 = 3 m[3]=0 * 2 = 0 = 0 Получили 2^5. Результатом является массив каждый элемент которого соответствует разряду числа. Печатаем в строчку элементы массива 032, и с начала убераем лишние нули -> 32. То же самое можно сделать и для 2^500. Только для этого нужно естевственно увеличить размер массива (то есть разрядность конечного числа) Ниже приведен код программы которая это делает
Надеюсь помог! ![]() |
|||
|
||||
Рыська |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.7.2005 Где: Питер Репутация: нет Всего: нет |
xibyte, спасибо огромное =))
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |