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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2011, 18:12   #1
stepanuch
Новичок
Джуниор
 
Регистрация: 01.12.2011
Сообщений: 1
Сообщение Очереди

Даны две очереди в каждой очереди находится по 10 различных чисел. Найти в первой очереди максимальное число а во второй-наименьшее число.
stepanuch вне форума Ответить с цитированием
Старый 01.12.2011, 20:25   #2
Fi11eR
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 29
По умолчанию

вытащил первое число из очереди записал в какойнить max положил обратно в очередь, потом поочередно вытаскиваешь число сравниваешь с max, если больше чем max то записываешь в max, кладешь обратно в очередь, аналогично с минимальным ;-)
Fi11eR вне форума Ответить с цитированием
Старый 02.12.2011, 00:04   #3
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

А я вот думаю что это просто два массива. В первом находиш макс. элемент , а во втором мин. элемент =)
Я это написал как вариант решения задачи.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 02.12.2011, 00:30   #4
Fi11eR
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 29
По умолчанию

Leshii, очередь по разному реализована может быть. может и массив, на чаще всего это список
Fi11eR вне форума Ответить с цитированием
Старый 02.12.2011, 16:25   #5
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Верю, но вот это мы с тобой диспутируем, а автор ни словечка.
Так вот, вопрос, именно к автору, как же вам сказали его реализовать ?)
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 02.12.2011, 19:32   #6
Asyl777
Новичок
Джуниор
 
Регистрация: 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
Asyl777 вне форума Ответить с цитированием
Старый 02.12.2011, 20:17   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,312
По умолчанию

Очередь - это очередь, а массив - это массив.
Очередь может быть реализована через массив, но далеко не всегда это удобно.
Алгоритм решения задачи представляется следующим:
0. Создадим очередь для эксперименов (random);
1. Сохраним значение указателя на хвост очереди;
2. Читаем элемент очереди и сохраняем его в элементе min(max) соответственно;
3. Возвращаем элемент в очередь. Т.е. в хвост;
4. Сравниваем указатель на начало очереди с сохраненным указателем на хвост;
5. Если не равно, то переходим на 2, иначе конец;
6. Выводим найденное значение;
Потребуется написать процедуры: нач. формир. очереди, добавление в хвост, чтение.
Пример:
Код:
{Элемент очереди}
Type Tpnode = ^node;
   node = record
      d : integer;
      p : pnode;
   end;

var beg, fin : Tpnode;
{======{Первый элемент очереди}=========}
procedure first(var beg, fin : Tpnode; d: integer);
begin
   new(beg);
   beg^.d := d;
   beg^.p := nil;
   fin := beg;
end;
{=======Добавление в очередь============}
procedure add(var fin : Tpnode; d : integer);
var p : Tpnode;
begin
   new(p);
  p^.d := d;
  p^.p := nil;
  fin^.p := p;
  fin := p;
end;
{=======Извлечение из очереди============}
procedure get(var beg: Tpnode; var d: integer);
var p:Tpnode;
begin
   d := beg^.d;
   p := beg;
   beg := beg^.p;
   dispose(p);
end;
{========Далее главная часть программы=========}
Далее надо немного пофантазировать
P.S. Данный фрагмент с небольшими изменениями взят из учебного пособия: Т.А. Павловская, Программирование на ЯВУ. Паскаль.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очереди 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