Stos - minimalna i maksymalna ilość elementów

0

mam napisać program który będzie sprawdzał na stosie zawsze czy pozostała określona stała minimalna ilość elementów, oraz wielkość stosu nie przekroczy maksymalnej liczby elementów ilość elementów musi być lokalnie funkcje powiny zwracać true lub false problem jest w tym że wprowadza jedną wartość zamiast kilku

type
  wskaznik = ^element;
  element = record
    dana: integer;
    wsk: wskaznik;
  end;

var
  s: wskaznik;
  a: integer;

const
  min = 1;
  max = 5;

procedure push(var x: wskaznik; var y: integer);
var
  top: wskaznik;
begin
  if x = nil then
  begin
    new(top);
    top^.dana := y;
    top^.wsk  := x;
    x := top;
  end;
end;

procedure pop(var x: wskaznik; var y: integer);
var
  bottom: wskaznik;
begin
  if x <> nil then
  begin
    y := x^.dana;
    bottom := x^.wsk;
    dispose(x);
    x := bottom;
  end;
end;

function push2(var x: wskaznik; var y: integer): boolean;
var
  il: integer;
begin
  if x <> nil then
  begin
    if il < max then
    begin
      push(x, y);
      push2 := true;
      il := il + 1
    end
    else
      push2 := false;
  end;
end;

function pop2(var x: wskaznik; var y: integer): boolean;
var
  il: integer;
begin
  if x <> nil then
  begin
    if il > min then
    begin
      pop(x, y);
      pop2 := true;
      dec(il);
    end;
  end
  else
    pop2 := false;
end;

function check(var x: wskaznik; var y: integer): integer;
var
  b, i: integer;
begin
  while push2(x, y) = true do
  begin
    writeln('Wpisz ilosc');
    readln(y);
    push(x, y);
    dec(b);
    writeln;

    while pop2(x, y) = true do
    begin
      pop(x, y);
      writeln(y);
    end;

    writeln('zdjales wszystkie elementy');
    readln;
  end;
end;

begin
  check(s, a);
  writeln;
  readln;
end.
3

Czy wiesz że możesz to napisać również tak:

wskaznik=^element; element = record dana:integer; wsk:wskaznik; end; var s:wskaznik; a:integer; const min=1; max=5; procedure push(var x:wskaznik; var y:integer); var top:wskaznik; begin if x=nil then begin new(top); top^.dana := y; top^.wsk := x; x:=top; end; end; procedure pop(var x:wskaznik; var y:integer); var bottom:wskaznik; begin if x<> nil then begin y:=x^.dana; bottom:=x^.wsk; dispose(x); x:=bottom; end; end; function push2(var x:wskaznik; var y:integer):boolean; var il:integer; begin if x<>nil then begin if il<max then begin push(x,y); push2:=true; il:=il+1 end else push2:=false; end; end; function pop2(var x:wskaznik; var y:integer):boolean; var il:integer; begin if x<> nil then begin if il>min then begin pop(x,y); pop2:=true; dec(il); end; end else pop2:=false; end; function check(var x:wskaznik; var y:integer):integer; var b,i:integer; begin while push2(x,y)=true do begin writeln('Wpisz ilosc'); readln(y); push(x,y); dec(b); writeln; while pop2(x,y)=true do begin pop(x,y); writeln(y); end; writeln('zdjales wszystkie elementy'); readln; end; end; begin check(s,a); writeln; readln; end.

Zgadnij czemu nikt tak nie robi?

Sformatuj kod sensownie, wklej w znaczniki <``code=delphi>tu kod w delphi/pascal</code> wtedy szansa że ktoś odpowie znacznie wyrośnie. Oraz bardzo wyrośnie szansa że ktoś odpowie szybko.

0

@musol22 - nie wiem czy zdajesz sobie sprawę, ale ten wątek od razu powinien wylądować do kosza:

  • za nadanie wątkowi nic nie mówiącego tematu,
  • za używanie prefiksu w temacie wątku,
  • za wstawienie kodu programu bez specjalnych znaczników <code class="delphi"></code>,
  • za niesformatowanie kodu, przez co czytelność jest praktycznie żadna,
  • za bezsensowny opis problemu,
  • za nieuzupełnienie tagów sensownymi informacjami, oprócz nazwy języka;
    Poza tym:
musol22 napisał(a)

mam napisać program który będzie sprawdzał na stosie zawsze czy pozostała określona stała minimalna ilość elementów, oraz wielkość stosu nie przekroczy maksymalnej liczby elementów ilość elementów musi być lokalnie funkcje powiny zwracać true lub false problem jest w tym że wprowadza jedną wartość zamiast kilku

To jest po polsku..? W przyszłości poświęć więcej czasu na dokładniejsze opisanie problemu, a także nie zapomnij sensownie wykorzystać znaków przecinka oraz kropki;

Kod tym razem sformatowałem za Ciebie, ale następnym razem wątek wyląduje w koszu; Jeśli nawet znajdzie się ktoś chętny pomóc, to przez niedbalstwo skutecznie mu to utrudnisz i nie prędko uzyskasz sensowne odpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1