Если кто забыл - напоминаю: основное правило очереди - первым вошёл - первым вышел!
Итак. Пусть дан одномерный массив (он задаёт количество элементов).
Задача заключается в следующем: с помощью функций put и get реализовать распечатку текста на экране.
.Например:
get(1)
get(2)
writeln(get)
writeln(get)
Причём если следующая команда get будет превышать массив, то число будет !!!!!записываться
в конец очереди (другой вариант - в начало)!!!!!!!!!!!!
пример:
put(1)
put(2)
put(3)
get
get
get ; здесь массив состоит из 2-х элементов и происходит переполнение ...
ВАЖНО:
функции имеют слежующий вид:
function put(i:integer):boolean; (возвращает false если очередь пуста(по-моему - а может когда переполнение??)
и true, если переполнения нет)
function get:integer;
Вот и всё: ПОМОГИТЕ бедному студенту.!
P.S:
Вот я написал, но при переполнении не то, совсем не то:
uses crt;
const m=10;
var n:array[0..m] of integer;
i,j: integer;
procedure Init;
begin
for i:=1 to m do n[i]:=0;
n[0]:=1;
end;
function put(a:integer):boolean;
begin
put:=false;
if n[0]<=m then
begin
n[n[0]]:=a;
n[0]:=n[0]+1;
put:=true;
end;
end;
function get: integer;
begin
if n[0]>1 then
begin
get:=n[1];
n[0]:=n[0]-1;
for i:=1 to m-1 do
n[i]:=n[i+1];
end;
end;
begin
init;
clrscr;
writeln;
put(1);
put(2);
put(3);
writeln(get);
writeln(get);
put(4);
writeln(get);
writeln(get);
readln;
end.