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

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

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

> Очередь, в статической памяти
setare
сообщение 20.04.2005 17:50
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 152
Пол: Женский

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


Здравствуйте! Не могли бы вы сказать как можно изменить строчку
newtail:=(Q.tail mod MaxN) + 1; в программе очереди с помощью массива? Пожалуйста, подскажите. В faqe у вас только очередь в дин памяти. Мне нужно, чтобы очередь заполнялась полностью, а не оставляла одно звено. Программа по работе с очередями-добавление и удаление. Сама программа:
Код

program ochered_mas;
const
 MaxN=100;
  type
   Telem=integer;
   Telements=array[1..MaxN]of Telem;
   TQueue=record
    Elements:Telements;
    Head:integer;
    Tail:integer
   end;
    procedure InitQueue(var Q:TQueue);
     begin
      Q.Head:=1;
      Q.tail:=1;
     end;
    procedure PushQ(var Q:Tqueue;E:Telem;var c:boolean);
    var
     newtail:integer;
      begin
       newtail:=(Q.tail mod MaxN) + 1;
      with Q do
       if newtail<>head then
        begin
         tail:=newtail;
         elements[tail]:=E;
         c:=true;
        end
       else
        c:=false;
      end;
    procedure popQ(var Q:tQueue;E:Telem;var c:boolean);
     begin
      if (Q.head<>Q.tail) then
       begin
        with Q do
         begin
          E:=Elements[head];
          head:=(Head mod MaxN)+1;
         end;
       end;
     end;
  var
   Q:Tqueue;
   number:integer;
   E:telem;
   c:boolean;
  begin
     InitQueue(Q);
      repeat
       writeln('1:Push');
       writeln('2:Pop');
       writeln('3:Exit');
       writeln('Vvedite luboy nomer.');
       readln(number);
        case number of
      1:
       begin
        writeln('Vvedite chislo dlya dobavleniya.');
        readln(E);
        pushQ(Q,E,c);
       end;
      2:
       begin
        writeln('Vvedite chislo dlya izvlecheniya.');
        readln(E);
        PopQ(Q,E,c);
        writeln('izvlechonnoye chislo= ',E);
       end;
      end;
     if (Q.head=Q.tail) then
      writeln('Ochered pusta');
    until number=3
  end.


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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