IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача на стеки и очереди.
Анисия
сообщение 4.03.2009 7:10
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский
Реальное имя: Анисия

Репутация: -  0  +


Добрый день. Помогите разобраться с очередями и стеками. Как организовать очередь из n целых чисел. Пока взяла 5 чисел, это получается что надо сформировать массив. Посмотрите пожалуйста правильно сделала?

program Lab_4;
const max=5;
type Evt= integer;
var
elem:array [1..max] of Evt;
spos, rpos:integer;

end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 4.03.2009 15:28
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Мне кажется, что дело даже не в том, что шестой элемент не влезет, а в том, что если взять заведомо большой массив (чтоб все влезло на все случаи жизни), то будет неоправданная трата памяти. Динамическая память хороша именно тем, что выделяется только тогда, когда она нужна.

Но использование памяти - это другая тема. И вполне возможно, что Анисия этого еще просто не знает. Так что ничего не вижу плохого в демонстрации собственно принципа очереди на статическом массиве. Вот, я продолжил (немного изменив некоторые идентификаторы) программу из первого поста:
program Lab_4;
const
max=5;
m=max-1;

type
tElem= integer;

var
Line: array [0..m] of tElem;
a: tElem;
spos,rpos,n: integer;


function Put(e: tElem): boolean;
begin
if n<Max then begin
Rpos:=(Rpos+1) mod max;
Line[Rpos]:=e;
Inc(n);
Put:=true
end
else Put:=false
end;


function Get(var e: tElem): boolean;
begin
if n>0 then begin
e:=Line[Spos];
Spos:=(Spos+1) mod max;
Dec(n);
Get:=true
end
else Get:=false
end;


procedure Init;
begin
Spos:=0;
Rpos:=m;
n:=0
end;

begin
Init;
WriteLn(Put(1));
WriteLn(Put(2));
WriteLn(Put(5));
WriteLn(Put(-1));
WriteLn(Put(10));
WriteLn(Put(4)); {тут очередь переполнится, и пойдет false}
WriteLn(Put(6));

while Get(a) do WriteLn('Got ',a);
ReadLn
end.
Анисия - разберешься?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анисия
сообщение 5.03.2009 4:31
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский
Реальное имя: Анисия

Репутация: -  0  +


Цитата(Lapp @ 4.03.2009 19:28) *
Анисия - разберешься?
smile.gif Попробую...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Анисия   Задача на стеки и очереди.   4.03.2009 7:10
volvo   Тебе что, стек организовать надо на основе массива...   4.03.2009 9:33
Анисия   Тебе что, стек организовать надо на основе массив...   4.03.2009 10:55
volvo   Очередь можно сформировать на основе статического ...   4.03.2009 11:29
Lapp   Мне кажется, что дело даже не в том, что шестой эл...   4.03.2009 15:28
Анисия   Анисия - разберешься? :) Попробую...   5.03.2009 4:31
Анисия   Подскажите что означает две команды Dec и Inс???   5.03.2009 5:07
Lapp   Подскажите что означает две команды Dec и Inс??? ...   25.03.2009 7:12
amega   а можно маденький вопросик? уже которою програму п...   25.03.2009 9:38
volvo   Не путай теплое с мягким... TElem описывает тип да...   25.03.2009 10:11
amega   о спасибо! буду знать теперь) :good:   25.03.2009 10:19
Анисия   Попробовала сегодня написать, счою программку на о...   25.03.2009 10:43
volvo   Добавь первой строкой {$R+} и запусти свою пр...   25.03.2009 10:59
Анисия   Выходит за пределы страницы :blink: f:=f+1; на эт...   27.03.2009 7:16
Lapp   Выходит за пределы страницы :blink: f:=f+1; на эт...   27.03.2009 17:55
Анисия   Мне дали вот такое задание: организовать очередь и...   30.03.2009 9:11
Анисия   Как я правидно поняла, надо циклом создавать очере...   30.03.2009 19:42
volvo   Мне всегда нравятся вот такие задания... Просто ве...   31.03.2009 10:22
Lapp   А ты что предлагаешь? Пришел кто-то последним, тут...   31.03.2009 13:05
Анисия   :unsure: :( Спасибо за то, что указали за мою бе...   1.04.2009 3:49
Анисия   Спасибо всем огромное!!!! У меня п...   1.04.2009 10:01


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 1:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"