• 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
79 wizyt
pytanie zadane 14 marca 2018 w Pascal, Delphi przez giedymin33 Początkujący (290 p.)
zamknięte 14 marca 2018 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ź 217 wizyt
pytanie zadane 12 maja 2017 w C i C++ przez AndekQR Użytkownik (880 p.)
0 głosów
0 odpowiedzi 310 wizyt
pytanie zadane 2 grudnia 2017 w Pascal, Delphi przez DragonCoder Pasjonat (19,370 p.)
0 głosów
1 odpowiedź 47 wizyt
pytanie zadane 19 stycznia w C i C++ przez dzuulie Nowicjusz (120 p.)
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

64,819 zapytań

111,276 odpowiedzi

234,017 komentarzy

46,696 pasjonatów

Przeglądających: 249
Pasjonatów: 13 Gości: 236

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.

...