Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2010, 12:45   #1
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию Описание больших чисел через дэк

Доброго времени суток. Задача в следующем, нужна процедура заполнения дэка длинным числом из файла, на выходе - две головы. И не помешала бы процедура(можно функцию) вывода этого дэка на экран. Я сколько смотрел в инете, большенство нормальных людей реализуют большие числа через массивы, но у меня вариантов - либо дэк, либо стэк, либо очередь. Пробовал самостоятельно сделать через стэк, число выводится на экран задом на перед (причина мне ясна, а вот как с этим бороться - увы, не понимаю. Препод говорил, что нажно осуществить рекурсивный вход в стэк, может кто знает как?)
В общем надеюсь на шаблон, или хотябы на ссылку. Заранее спачибо.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 03.04.2010, 15:39   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

примерно вот так
Код:
procedure writeNumber(n: integer)://вывод N значного числа
var
   s: char;
begin
   if n<=0 then exit //все знаки обработаны (конец рекурсии)
   else begin
     s:=stack.pop;//забираем из стека но не выводим
     writeNum(n-1); //обрабатываем оставшиеся
     write(s); //а теперь выводим     
   end;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 04.04.2010, 17:26   #3
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

evg_m, и что же мы понимаем под n? Если бы к элементу стека можно было обращаться по индексу, как, например, к элементу массива, то я бы тут не спрашивал.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 04.04.2010, 19:49   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Код:
s:=stack.pop;//забираем из стека но не выводим
а N это информация о том сколько знаков нам над брать из стека можно не использовать но тогда в стекке должен быть ограничитель(индикатор) что мы взяли все цифры числа

смысл данной процедуры
Код:
s1:=stack.pop;
s2:=stack.pop;
...
sN:=stack.pop; //сначала считываем весь наш стек
write(sn);
...
write(s2);
write(s1); //потом его выводим в обратном порядке
только вместо s1,s2,...sn использованы локальные значения переменной s при рекурсивном вызова процедуры

writenum(n); //s=sn
....
writenum(2); //s=s2
writenum(1); //s=s1
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 04.04.2010 в 20:05.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# Сложение больших чисел SL1CK Помощь студентам 4 23.11.2009 21:07
Нахождение остатка от деления очень больших чисел Pavel_Ine Общие вопросы C/C++ 6 22.11.2009 20:49
сохранение чисел в файл через пробел(С++) Lorden Помощь студентам 6 09.04.2009 23:31
алгоритм сравнения больших чисел со сдвигом WOLFak Паскаль, Turbo Pascal, PascalABC.NET 0 29.12.2008 22:36
Библиотека больших чисел на Delphi Victor1987 Помощь студентам 10 11.04.2008 08:25