• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Pascal - zapis listy jednokierunkowej do pliku (elementy na stosie).

0 głosów
61 wizyt
pytanie zadane 14 marca w Pascal, Delphi przez giedymin33 Początkujący (300 p.)
zamknięte 14 marca przez giedymin33

Potrzebuję informację nt. tego, jak poprawnie odnieść się do elementów na stosie z listy jednokierunkowej.

Koncepcja programu jest taka : dodaj element na stos - wypisz elementy  znajdujące się na stosie - usuń elementy ze stosu.

Teraz potrzebuję te elementy zapisać do pliku tekstowego. W przypadku typu rekordowego nie było problemów, ale teraz takowe się pojawiają. Jakieś sugestie?

 

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  lista = ^tlista;
  tlista = record
  imie: string[25];
  nazwisko: string[35];
  wiek:byte;
  PESEL: string;
  wsk: lista;
end;

var
pocz:lista;

procedure ini(var pocz:lista);  //procedura inicjalizujaca stos
begin
pocz:=nil;
end;

function dodaj(var pocz:lista):boolean;
var
temp:lista;

begin
new(temp);
if temp=nil then begin dodaj:=false;   //zwroci false jezeli pamiec przepelniona
writeln('Pamiec prawdopodobnie przepelniona!');
end
else
begin
writeln('Podaj imie: ');
readln(temp^.imie);

writeln('Podaj nazwisko: ');
readln(temp^.nazwisko);

writeln('Podaj wiek: ');
readln(temp^.wiek);

writeln('Podaj PESEL: ');
readln(temp^.pesel);

temp^.wsk:=pocz;

pocz:=temp;

dodaj:=true;

writeln('Pomyslnie dodano uzytkownika na stos');
end;
writeln;
end;

function usun(var pocz:lista):boolean;
var
temp:lista;
begin
if pocz=nil then begin usun:=false;
writeln('Stos jest pusty :(');
end
else
begin
temp:=pocz;
pocz:=pocz^.wsk;
dispose(temp);
usun:=true;
 end;
 writeln;
 end;


 function wypisz(pocz:lista):boolean;

 begin
 if pocz=nil then begin wypisz:=false;
 writeln('Stos jest pusty :(');
 end
 else
 begin
 wypisz:=true;
 while(pocz<>nil)   // petla bedzie wykonywac sie dopoki nie napotka na nil w pocz
                    // czyli bedzie wykonywac sie do ostatniego-pierwszego elementu na stosie;
 do
 begin
 writeln('Imie: ',pocz^.imie);
 writeln('Nazwisko: ',pocz^.nazwisko);
 writeln('Wiek: ',pocz^.wiek);
 writeln('Pesel: ',pocz^.PESEL);
 pocz:=pocz^.wsk;
 writeln;
  end;
  end;
  writeln;
 end;

 procedure zapis(pocz:lista);
 var
 plik:text;

 begin
 assign(plik,'stos.txt');
 append(plik);
 readln(pocz);
 writeln(plik,pocz);
 closefile(plik);


 end;


 procedure menu();
 var
 a:byte;
 begin
 repeat
 writeln('Witaj w bazie STOS.');
 writeln('1. Dodaj uzytkownika na stos.');
 writeln('2. Usun uzytkownika ze stosu.');
 writeln('3. Wypisz uzytkownika.');
 writeln('0. ||WYJDZ Z PROGRAMU||.');
 readln(a);
 writeln;

 if (a=1) then begin
 writeln(dodaj(pocz));
 end;

  if (a=2) then begin
 writeln(usun(pocz));
 end;

   if (a=3) then begin
 writeln(wypisz(pocz));
 end;

 until (a=0);
 writeln;

 end;


begin
  { TODO -oUser -cConsole Main : Insert code here }
  ini(pocz);  //inicjalizacja stosu
  menu();
end.

 

komentarz zamknięcia: rozwiązałem problem

Podobne pytania

0 głosów
1 odpowiedź 116 wizyt
pytanie zadane 12 maja 2017 w C i C++ przez AndekQR Użytkownik (840 p.)
0 głosów
0 odpowiedzi 230 wizyt
pytanie zadane 2 grudnia 2017 w Pascal, Delphi przez DragonCoder Stary wyjadacz (13,730 p.)
0 głosów
3 odpowiedzi 292 wizyt
pytanie zadane 4 września 2017 w Java przez Hiskiel Pasjonat (17,120 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

57,749 zapytań

102,788 odpowiedzi

212,080 komentarzy

29,696 pasjonatów

Przeglądających: 348
Pasjonatów: 12 Gości: 336

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...