информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыSpanning Tree Protocol: недокументированное применениеЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Дело вот в чём... 17.10.03 10:20  Число просмотров: 1486
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> > А проверять работоспособность пробовали?
> >
> > Заренее оговоренное СТОП-значение пусть будет 0.
> > Попробуйте последовательность: 1, 10, 9, 8, 7, 6, 5,
> 4, 3,
> > 2.
> > Второе наибольшее должно быть 9
>
> Программа работает, но не в ней дело.

Неужели 9 выдала?

> Задача-то тривиальная, для того чтобы вытаскивать
> «предпоследнее» максимальное значение, была организована
>очередьиз двух элементов в лице переменных Max и oldMax.
> А вот если немного усложнить задачу, т.е «выдавть n-е с
> конца максимальное значение», вот тут наступят заморочки.
> Тут уже надо организовывать динамический массив из n
> элементов, двигать его (это же очередь), или пользоваться
> связанным списком, что эффективнее. Но бездинамического
> выделения памяти не обойтись. Обычно нерадивые программеры

> боятся всей этой динамики, указателей и проч. нетривиальных
> вещей, поэтому и появляются в программах монстроидальные
> массивы «про запас».

Динамический массив действительно решает многие проблемы, и динамическим выделением памяти однозначно имеет смысл пользоваться там, где неизвестна длина массива или она может меняться до неизвестных значений. Если же размерность заранее известна, то можно использовать статический массив. Обычно эти задачи более ущербные, то есть поставлены для конкретного случая, но не универсальны. В особо крайнем случае можно попользоваться и статическим массивом, если его предельные размеры будут принебрежимо малы по отношению к объему оперативной памяти. Для кроссворда можно завести массивчик 1000х1000 или даже 10000х10000. Просто кроссворды-гиганты. В первом случае мегабайт памяти потребуется - это ничто, по сравнению с гигабайтом имеющейся оперативной памяти. Во втором случае 100 мегабайт - на десятичный порядок меньше, чем объем ОЗУ. Ну не очень красиво, зато легко запрограммировать. Современные ОС лояльно отнесуться к таким массивам. Свободная системная память будет отжираться по мере обращения к ячейкам. Конечно надо не забывать рассматривать возможность обходится без массивов (статических и динамических), но это не тот случай. Я кроссворд имею в виду.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach