ďťż
 
 
   numerowanie listy jednokierunkowej, zapis do pliku
 
 

Tematy

 
    
 

 

 

 

numerowanie listy jednokierunkowej, zapis do pliku





dzakens - 22-02-2010 11:55
Mam taki problem, rozchodzi się o to, że chcę zrobić licznik kolejnych pozycji listy jednokierunkowej tak, że gdy zapiszę do pliku pozycje podczas jednego uruchomienia programu to po ponownym jego uruchomieniu liczenie zaczynało się od konkretnego numeru. Jakieś pomysły? Początkujący i wyrozumiałość wskazana.



wojak - 22-02-2010 16:38
Mam gotowe programy z listami w Delphi. Jak chcesz mogę wrzucić kody. Ja na szczęście już to mam od dawna za sobą.



dzakens - 22-02-2010 18:10
Jakby to nie był problem.



wojak - 23-02-2010 15:07
Tu masz coś w ten deseń. Nie robi dokładnie tego co twój z zadania, ale myślę, że będzie pomocny. Lista jednokierunkowa na przykładzie stosu. Przerób sobie poniższy kod.

program lista_5_zad_1;

{Zadanie 1.

Zadeklarować typy danych określające listę jednokierunkową:
type tdana = real;
plista = ^tlista;
        tlista = record
        liczba: tdana;
        nast: plista;
end;
Wykorzystać przedstawione definicje do implementacji stosu. Opracować procedurę
dodającą element na stos, zdejmującą element ze stosu oraz wyprowadzającą zawartość
stosu na ekran. Program ma sprawdzać czy liczba dodawana na stos jest większa od 10.
Jeżeli tak to zapisuje w pliku tekstowym wartość tej liczby oraz jej pozycję na
stosie a następnie likwiduje stos i wychodzi z programu. Liczby dodawane na stos
są wprowadzane przez użytkownika.}

{$APPTYPE CONSOLE}

uses

  SysUtils;

type
  tdana = real;
  plista = ^tlista;
  tlista = record
    liczba : tdana;
    nast : plista;
  end;

function Dodaj (var pocz : plista; co : tdana) : boolean;
var nowy : plista;
begin
  New (nowy);
  if nowy = nil then
  begin
    result := false;
    exit;
  end;
  nowy^.liczba := co;
  if pocz = nil then pocz := nowy
  else
  begin
    nowy^.nast := pocz;
    pocz := nowy;
  end;
  result := true;
end;

procedure Wyswietl (pocz : plista);
begin
  while pocz <> nil do
  begin
    writeln ('Liczba : ',pocz^.liczba:4:2);
    pocz := pocz^.nast;
  end;
end;

function Usun (var pocz : plista) : boolean;
var temp : plista;
begin
  if pocz = nil then
  begin
    result := false;
    exit;
  end;
  temp := pocz;
  pocz := pocz^.nast;
  dispose (temp);
  result := true;
end;

procedure Zapisz (pocz : plista; co : tdana);
var
  plik : textfile;
  poz : word;
begin
  assignfile (plik,'liczby.txt');
  if not fileexists ('liczby.txt') then rewrite (plik) else append (plik);
  poz := 0;
  while pocz <> nil do
  begin
    inc (poz);
    if pocz^.liczba > 10 then writeln (plik, poz,' ',co:4:2);
    pocz := pocz^.nast;
  end;
  closefile (plik);
end;

procedure Czysc (var pocz : plista);
var temp : plista;
begin
  while pocz <> nil do
  begin
    temp := pocz;
    pocz := pocz^.nast;
    dispose (temp);
  end;
end;

var
  pocz : plista;
  opcja : char;
  co : tdana;
begin
  repeat
    writeln ('[1] - Odloz na stos');
    writeln ('[2] - Wyswietl stos');
    writeln ('[3] - Zdejmij ze stosu');
    writeln ('[4] - Zakoncz');
    readln (opcja);
    case opcja of
      '1':begin
            write ('Podaj liczbe: ');
            readln (co);
            writeln (Dodaj (pocz, co));
            if co > 10 then Zapisz (pocz, co);
          end;
      '2': Wyswietl (pocz);
      '3': writeln (Usun (pocz));
    end;
  until opcja = '4';
  Czysc (pocz);
end.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis