Stos przechowujący w każdym węźle liczbę i łańcuch znaków

0

witam, zrobilem taki programik, ktory dodaje elementy do stosu i je usuwa. jednakze musze zrobic tak, aby procedury, tzn. jej parametrami nie były integer i string tylko rekord z dwoma polami typu integer i string. pomozecie?

program zad1;
uses crt;
type w=^rekord;
  rekord=record
    a:integer;
    b:string;
    w1:w;
    end;

var nu,ne:integer; nu1:string; p:w;

  procedure push(var x:w; var y:integer; var z:string);
  var top:w;
    begin
      new(top);
      top^.a:=y;
      top^.b:=z;
      top^.w1:=x;
      x:=top;
    end;

  procedure pop(var x:w; var y:integer; var z:string);
  var bot:w;
    begin
      y:=x^.a;
      z:=x^.b;
      bot:=x^.w1;
      dispose(x);
      x:=bot;
    end;

  begin
    clrscr;
    writeln('ile elementow polozyc na stos?');
    readln(ne);
    while ne>0 do
begin
  writeln('podaj numer elementu');
  readln(nu);
  readln(nu1);
  push(p,nu,nu1);
  dec(ne);
end;
    writeln;
    writeln('na stos polozono elementy: ');
    while p<>nil do
begin
     pop(p,nu,nu1);
     writeln(nu,' ',nu1);
end;
     readln;
     end.
1

Jeśli musisz przekazać rekord, to najpierw zadeklaruj jego typ, np.:

type
  TStackValue = record
    Num: Integer; // wartość liczbowa
    Str: String;  // łańcuch znaków
  end;

Następnie przerób rekord pojedynczego węzła, aby zamiast dwóch osobnych wartości zawierał pole rekordowe:

type
  TStackElement = record
    Data: TStackValue; // rekord z danymi
    {...}
  end;

No i na koniec zaktualizuj kody procedur, np.:

procedure Push(var X: W; var Y: Integer; var Z: String);
begin
  {...}

  // wpisanie wartości argumentów do rekordu węzła
  Top^.Data.Num := Y;
  Top^.Data.Str := Z;

  {...}
end;

Nic więcej nie musisz zmieniać; Poza tym formatowanie słabe, a nazewnictwo typów i parametrów tragiczne - nie trzymasz się ustalonych zasad, na dodatek mając gdzieś styl wielbłądzi, przez co Twój kod jest nieczytelny i trudno się go analizuje; Postaraj się nauczyć pisania czytelnego kodu;

Wątek przenoszę do działu Newbie, bo dotyczy podstaw programowania; No i nie wiem dlaczego akurat założyłeś wątek w tym dziale - od Pascala jest dział Newbie (dla początkujących) oraz dział Delphi/Pascal dla bardziej zaawansowanych.

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