jak sortować w rekordach? (pascal)

Odpowiedz Nowy wątek
Efciaaa
2006-06-11 12:42
Efciaaa
0

chcialabym posortowac alfabetycznie nazwiska osob zapisanych w rekordzie.. ponizej kod źródłowy procedury pobieranie danych.. co zrobic zeby program w "lista osob" wypisywal posortowane juz nazwiska? (caly program opiera sie tylko na rekordach)

procedure uzupelnianie;
var z:char;
    i,k:integer;
begin
assign(osoby,'ewelina.txt');
       reset(osoby);
       seek(osoby,filesize(osoby));
       i:=filesize(osoby)+1;
       repeat
       writeln('Osoba ',i);
       writeln;
       with dane do
            begin
                 write('Podaj imie: ');
                 readln(imie);
                 write('Podaj nazwisko: ');
                 readln(nazwisko);
                 write('Podaj ulice: ');
                 readln(ulica);
                 write('Podaj numer domu: ');
                 readln(nr_domu);
                 write('Podaj numer mieszkania: ');
                 readln(nr_mieszk);
                 write('Podaj miejscowosc: ');
                 readln(miejsc);
                 write('Podaj kod pocztowy: ');
                 readln(kod);

            end;
            write(osoby,dane);
     writeln;
     i:=i+1;
     write('Czy chcesz zakonczyc dodawanie osob do ksiazki? (t/n)');
     readln(z);
     writeln('-----------------------------------------------------');
     until (z='t') or (z='T');
      close(osoby);
      clrscr;
end; 

Pozostało 580 znaków

2006-06-11 14:02

Rejestracja: 14 lat temu

Ostatnio: 6 lat temu

0

Sortowanie bąbelkowe:

CONST
 Max = 100;

TYPE
 TRec = RECORD
   Name :STRING[20];
   Nick :STRING[20];
 END;

VAR
 Lista :ARRAY [1..Max] OF TRec;
 Temp  :TRec;
 i, j  :Word;

BEGIN
 FOR i := 1 TO Max-1 DO
  FOR j := i+1 TO Max DO
   BEGIN
    { jezeli chcesz zmienic kierunek to zmien na }
    { IF Lista[i].Name < Lista[j].Name THEN }
    { jezeli chcesz zmienic kryteria to zmien na }
    { IF Lista[i].Nick < Lista[j].Nick THEN }
    IF Lista[i].Name > Lista[j].Name THEN
       BEGIN
        Temp := Lista[j];
        Lista[j] := Lista[i];
        Lista[i] := Temp;
       END;
   END;
END;

<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

2006-06-11 14:07

Rejestracja: 14 lat temu

Ostatnio: 6 lat temu

0
Efciaaa napisał(a)
write('Podaj imie: ');
readln(imie);
write('Podaj nazwisko: ');
readln(nazwisko);

Proponuję zapisywać w ten sposób (czytelność + mniej linii }

write('Podaj imie: '); readln(imie);
write('Podaj nazwisko: '); readln(nazwisko);

<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

Efciaaa
2006-06-11 14:20
Efciaaa
0

tak, tylko ja mam caly program na rekordach :) zadnych list.. i zapisuje mi w pliku *txt.. wiec jak mam porownac osoby, ktore dopiero wpisuje do tych zapisanych wczesniej?

Pozostało 580 znaków

Odpowiedz

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