![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 01.12.2011
Сообщений: 1
|
![]()
Даны две очереди в каждой очереди находится по 10 различных чисел. Найти в первой очереди максимальное число а во второй-наименьшее число.
|
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 18.06.2009
Сообщений: 29
|
![]()
вытащил первое число из очереди записал в какойнить max положил обратно в очередь, потом поочередно вытаскиваешь число сравниваешь с max, если больше чем max то записываешь в max, кладешь обратно в очередь, аналогично с минимальным ;-)
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 26.07.2011
Сообщений: 376
|
![]()
А я вот думаю что это просто два массива. В первом находиш макс. элемент , а во втором мин. элемент =)
Я это написал как вариант решения задачи.
Люблю на ты.Я человек простой
![]() |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 18.06.2009
Сообщений: 29
|
![]()
Leshii, очередь по разному реализована может быть. может и массив, на чаще всего это список
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 26.07.2011
Сообщений: 376
|
![]()
Верю, но вот это мы с тобой диспутируем, а автор ни словечка.
Так вот, вопрос, именно к автору, как же вам сказали его реализовать ?)
Люблю на ты.Я человек простой
![]() |
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 02.12.2011
Сообщений: 1
|
![]()
Не, ребят это совсем не массивы. Чтобы решить данную задачу не знаю как найти MIN и max элементы. Я вот могу написать решение другой задачи с очередями.
очередь с целыми числами разбить на две очереди так, чтобы в одной очереди были четные числа, а в другой - нечетные числа. решение: program ots_2; type TElem=integer; ukaz=^zweno; zweno=record ELEM:telem; {информационное поле} next,prev:Ukaz;{поле ссылки на Zweno} end; otsered=ukaz; var ots, ots1,ots2,otswih,otswih1,otswih2,c, q,q1,q2,p:ukaz; a,EL1,EL2,EL:TElem; k,m,n,i,j:integer; procedure Wots(Var ots,otswih,q:ukaz; NELem:telem); {занесение элемента в очередь} begin if ots=nil then begin q:=nil; New(q);{порождение первого звена} q^.ELem:=NELem; {созданное звеносделать вершиной очереди} q^.Next:=ots; ots:=q; otswih:=q; end else begin new(q^.prev);q:=q^.prev; q^.Elem:=NELem; {созданное звено сделать вершиной очереди} q^.Next:=ots; ots:=q; q^.prev:=nil end end; procedure Isots(var ots,otswih:ukaz;var a:TELem); var q,s:ukaz; begin if ots=otswih then begin a:=otswih^.Elem;s:=otswih;dispose(s );otswih:=nil;ots:=nil end else begin {выбор элемента из очереди} q:=otswih; s:=q; a:=q^.ELem; otswih:=q^.prev; {исключение первого звена из очереди} dispose(s) end end; BEGIN {ОСНОВНАЯ ПРОГРАММА} ots:=nil;otswih:=nil;{создаем пустую очередь} ots1:=nil;otswih1:=nil;{создаем пустую очередь} ots2:=nil;otswih2:=nil;{создаем пустую очередь} writeln('ввести эл. в очередь через пробелб число 0 и Enter завершает ввод'); read(EL); repeat Wots(ots,otswih,q,EL); read(EL); until EL=0; writeln; repeat Isots(ots,otswih,EL); {из одной очереди создаем две} if (EL mod 2=0) then Wots(ots1,otswih1,q1,EL) else Wots(ots2,otswih2,q2,EL) until otswih=nil; writeln; repeat Isots(ots1,otswih1,a); write(a,'') until otswih1=nil; writeln; repeat Isots(ots2,otswih2,a); write(a,'') until otswih2=nil; writeln END. ----------------------------------------------------- ввести эл. в очередь через пробелб число 0 и Enter завершает ввод 1 2 3 4 5 6 0 246 135 |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,367
|
![]()
Очередь - это очередь, а массив - это массив.
Очередь может быть реализована через массив, но далеко не всегда это удобно. Алгоритм решения задачи представляется следующим: 0. Создадим очередь для эксперименов (random); 1. Сохраним значение указателя на хвост очереди; 2. Читаем элемент очереди и сохраняем его в элементе min(max) соответственно; 3. Возвращаем элемент в очередь. Т.е. в хвост; 4. Сравниваем указатель на начало очереди с сохраненным указателем на хвост; 5. Если не равно, то переходим на 2, иначе конец; 6. Выводим найденное значение; Потребуется написать процедуры: нач. формир. очереди, добавление в хвост, чтение. Пример: Код:
![]() P.S. Данный фрагмент с небольшими изменениями взят из учебного пособия: Т.А. Павловская, Программирование на ЯВУ. Паскаль.
Как-то так, ...
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Очереди | Ame | Помощь студентам | 0 | 30.06.2011 22:15 |
Очереди в С++ | Radzhab | Общие вопросы C/C++ | 4 | 31.03.2011 00:02 |
Очереди | Lucefer2007 | Общие вопросы C/C++ | 1 | 13.03.2011 16:58 |
очереди | Nostalgia | Помощь студентам | 2 | 22.03.2010 17:48 |