Необходимо разработать программу, реализующую работу со стеком очередью. Программа должна содержать функции вставки, извлечения, контроля на переполнение, контроля на отсутствие элементов (пустой стек или очередь), отображения на экране значения извлекаемого элемента.(С++) и желательно с блок схемой
Вы можете внести данные для массива вручную или воспользоваться кнопкой для автозаполнения с датчика случайных чисел. Не забудьте предварительно указать количество элементов в массиве.
Кнопка "Задание 1" выполняет первую задачу и выводит результат в ячейку, расположенную правее этой кнопки. Кнопка "Задание 2" аналогично работает для второго задания. Коды, привязанные к кнопкам - это программы-обработчики события "Нажатие кнопки".
type FUN = function (x: real): real;
function f(x: real): real;begin Result := x*x +1 ;end;
// l (logical) - логические координаты// s (screen) - физические координатыprocedure drawGraph(x1,x2: real; f: FUN); var xl0,wl,yl0,hl: real; xs0,ws,ys0,hs: integer; function LtoSx(xl: real): integer; begin Result := round(ws/wl*(xl-xl0)+xs0); end; function LtoSy(yl: real): integer; begin Result := round(hs/hl*(yl-yl0)+ys0); end; function StoLx(xs: integer): real; begin Result := wl/ws*(xs-xs0)+xl0; end;
begin // drawGraph xs0 := 0; ys0 := WindowHeight-1; ws := WindowWidth; hs := WindowHeight-1; xl0 := x1; wl := x2-x1;
var min := real.MaxValue; var max := real.MinValue; var yi: array of real; SetLength(yi,ws+1);
for var xi:=0 to ws do begin if xi > 320 then begin yi[xi] := f(StoLx(xi+xs0)); if yi[xi]<min then min := yi[xi]; if yi[xi]>max then max := yi[xi]; end; end; yl0 := min; hl := -(max-min);
// Нарисовать оси системы координат Line(0,LtoSy(0),ws,LtoSy(0)); Line(LtoSx(0),0,LtoSx(0),hs);
Pen.Color := clBlue; MoveTo(xs0,LtoSy(yi[0])); for var xi:=xs0+1 to xs0+ws do LineTo(xi,LtoSy(yi[xi-xs0]));end;
procedure Resize;begin ClearWindow; drawGraph(-60,60,f); Redraw;end;
begin LockDrawing; SetWindowCaption('График функции: масштабирование'); drawGraph(-60,60,f); Redraw; OnResize := Resize;end.