Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Дело вот в чём... 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 мегабайт - на десятичный порядок меньше, чем объем ОЗУ. Ну не очень красиво, зато легко запрограммировать. Современные ОС лояльно отнесуться к таким массивам. Свободная системная память будет отжираться по мере обращения к ячейкам. Конечно надо не забывать рассматривать возможность обходится без массивов (статических и динамических), но это не тот случай. Я кроссворд имею в виду.
|
|
|