vilq Posted January 31, 2007 Report Share Posted January 31, 2007 Mam bazę danych z danymi o samochodach(model, silnik, cena). chciałbym je sortować według dowolnego kryterium, jednak nie wiem jak to zrobić optymalnie.Edytowany -------Jak zrobić bazę danych na rekordach w Turbo Pascalu?Jak napisać bazę z tabelą rekordów z danymi o samochodach(model, silnik, cena)? Jak utworzyć rekord, typ rekordowy w Pascalu?Co to jest jak wygląda record w Pascalu?Jak zapisywać dane do rekordu?Jak pobierać dane z rekordu?Jak edytować rekord?Jak wyświetlać zawartość rekordu?Jak usunąć, skasować rekord z tabeli rekordów?Jak zapisać pliki rekordowe do pliku i jak odczytać plik rekordowe?Jak zapisać rekordy do pliku w Turbo Pascalu?Jak odczytać rekordy z pliku w Turbo Pascalu?Jak posortować rekordy i tabelę rekordów w Turbo Pascalu?Jak zrobić proste menu tekstowe w Turbo Pascalu?Jak napisać program w Turbo Pascalu?Gotowa baza danych, gotowy program, gotowiec w Turbo Pascalu Link to comment Share on other sites More sharing options...
TSr Posted January 31, 2007 Report Share Posted January 31, 2007 1. Użyć silnika baz danych np. MySQL2. Algorytmem Quick SortRozbudowałbyś trochę swoją wypowiedź... Ubuntu.pl user #10593 Link to comment Share on other sites More sharing options...
Kezard Posted January 31, 2007 Report Share Posted January 31, 2007 Poczytaj o QuickSort[link] Nie wiem jak w Pascalu ale w C++ qsort() znajduje się w bibliotece standardowej(stdlib.h), wiec moze pascal tez posiada implementacje tego algorytmu w którejś ze standardowych bibliotek. Link to comment Share on other sites More sharing options...
vilq Posted January 31, 2007 Author Report Share Posted January 31, 2007 [code=Pascal] program baza; uses crt; type { rekord w turbo pascalu } samochod = record marka, model, silnik, wyposazenie:string[20]; cena: Real; ilosc:Byte; end; var Klaw, Klawisz2:char; Licznik:byte; { liczba rekordów w tabeli } t1,p1:byte; plik:text; p2:single; r:array[1..100] of samochod; { procedura służąca do wprowadzania danych do rekordu o numerze Licznik } procedure wprowadz; begin clrscr; { czyszczenie ekranu } Licznik:=Licznik+1; { licznik rekordów } write('Marka : '); readln(r[Licznik].marka); { readln - odczyt danej z klawyatury } write('Model : '); readln(r[Licznik].model); write('Wersja silnika : '); { write - wyświetlanie napisu } readln(r[Licznik].silnik); write('Wersja wyposazenia: '); readln(r[Licznik].wyposazenie); write('Cena : '); readln(r[Licznik].cena); write('Ilosc : '); readln(r[Licznik].ilosc); end; { procedura wyświetla napisy, które mówią ze baza jest pusta } procedure pusta; begin writeln('Baza jest aktualnie pusta. Dodaj nowe wpisy lub wczytaj juz istniejace z pliku'); writeln; writeln('Nacisnij jakis klawisz...'); Klawisz2:=readkey; { program czeka na wcisnięcie dowolneko klawisza } end; { procedura wyświetla zawartosć rekordu o numerze t1 } procedure wyswietl; begin if Licznik=0 then { jeśli nie ma danych w tablicy to komunikat że baza jest pusta } pusta else begin { jesli są dane to wyświetlamy zawartosć rekordu o numerze t1 } writeln('Marka : ', r[t1].marka); writeln('Model : ', r[t1].model); writeln('Silnik : ', r[t1].silnik); writeln('Wersja wyposazenia: ', r[t1].wyposazenie); writeln('Cena : ', r[t1].cena:4:2); writeln('Ilosc : ', r[t1].ilosc); writeln('Wartosc : ', (r[t1].ilosc*r[t1].cena):4:2); writeln; end end; procedure edytuj; begin clrscr; if Licznik=0 then { jeśli nie ma danych w tablicy to komunikat że baza jest pusta } pusta else begin { edycja, zapisanie nowych danych, z klawiatury do rekordu } writeln('Ktory wpis chcesz edytować (1..', Licznik, ')'); readln(t1); write('Nowa marka : '); readln(r[t1].marka); write('Noey model : '); readln(r[t1].model); write('Nowa wersja silnika : '); readln(r[t1].silnik); write('Nowa wersja wyposazenia: '); readln(r[t1].wyposazenie); write('Nowa cena : '); readln(r[t1].cena); write('Nowa ilosc : '); readln(r[t1].ilosc); end end; { procedura wyświetla całą listę danych z tabeli } procedure wszystko; begin clrscr; if (Licznik<>0) then begin t1:=0; repeat t1:=t1+1; wyswietl; until t1=Licznik; end end; { Procedura zapisuje dane z tablicy rekordów do pliku } procedure zapisz; begin if Licznik=0 then begin clrscr; pusta; end else begin assign(plik, 'BAZA.DAN'); { przypisanie nazwy pliku do uchwytu } rewrite(plik); { otwarcie pliku do zapisu, jesli był taki plik } { to zostanie wyczyszczony } writeln(plik, Licznik); { zapisanie ilości rekordów w tablicy } t1:=0; repeat { początek petli } t1:=t1+1; { zwiekszenie numeru przegladanego rekordu } writeln(plik, r[t1].marka); { zapis kolejnych danych do pliku } writeln(plik, r[t1].model); writeln(plik, r[t1].silnik); writeln(plik, r[t1].wyposazenie); writeln(plik, r[t1].cena); writeln(plik, r[t1].ilosc); until t1=Licznik; { koniec petli } close(plik); { zamkniecie pliku po zapisie } end end; { wczytanie danych z pliku do tablicy rekordowej } procedure czytaj; begin assign(plik, 'BAZA.DAN'); { przypisanie nazwy pliku do uchwytu } reset(plik); { otwarcie pliku do odczytu } readln(plik, Licznik); { odczytanie ilości rekordów do wczytania do tablicy } t1:=0; repeat { początek petli } t1:=t1+1; { zwiekszenie numeru przegladanego rekordu } readln(plik, r[t1].marka); { danych kolejnych danych z pliku } readln(plik, r[t1].model); readln(plik, r[t1].silnik); readln(plik, r[t1].wyposazenie); readln(plik, r[t1].cena); readln(plik, r[t1].ilosc); until t1=Licznik; { koniec petli } close(plik); { zamkniecie pliku po zapisie } end; { kasowanie rekordu z tabeli } procedure usun; begin clrscr; if Licznik=0 then pusta else begin writeln('Podaj numer wpisu do usuniecia (1..', Licznik, ')'); readln(t1); repeat r[t1].marka:= r[t1+1].marka; r[t1].model:= r[t1+1].model; r[t1].silnik:= r[t1+1].silnik; r[t1].wyposazenie:= r[t1+1].wyposazenie; r[t1].cena:= r[t1+1].cena; r[t1].ilosc:= r[t1+1].ilosc; t1:=t1+1; until t1=Licznik; Licznik:=Licznik-1; end end; procedure info; begin if Licznik=0 then pusta else begin t1:=0; p1:=0; p2:=0; repeat t1:=t1+1; p1:=p1+r[t1].ilosc; p2:=p2+(r[t1].ilosc*r[t1].cena); until t1=Licznik; if p1=1 then writeln('Posiadasz ', p1, ' samochod o wartosci ', p2:4:2, ' zl.'); if (p1=2) or (p1=3) or (p1=4) then writeln('Posiadasz ', p1, ' samochody o lacznej wartosci ', p2:4:2, ' zl.'); if p1>=5 then writeln('Posiadasz ', p1, ' samochodow o lacznej wartosci ', p2:4:2, ' zl.'); writeln('Nacisnij jakis klawisz...'); Klawisz2:=readkey; { program czeka na wcisnięcie dowolneko klawisza } end end; begin textbackground(lightgray); { kolor tła rekstu } textcolor(black); { kolor tekstu } Licznik:= 0; { zerowanie licznika rekordów } { pętla główna programu czekająca na wybór opcji z menu } repeat clrscr; writeln('1. Nowy wpis'); writeln('2. Usun wpis'); writeln('3. Wy˜wietlanie wpisu'); writeln('4. Wy˜wietlanie wszystkich wpisw'); writeln('5. Odczyt z pliku'); writeln('6. Zapis do pliku'); writeln('7. Informacje o salonie'); writeln('8. Koniec programu'); repeat Klaw:= readkey; until (Klaw>='1') and (Klaw<='8'); // petla czekająca na klawisz {wzależności jaki klawisz został wcisnięty takie procedury zostaną uruchomione} if Klaw='1' then wprowadz; if Klaw='2' then usun; if Klaw='3' then begin clrscr; write('Podaj numer wpisu (1..', Licznik, '): '); readln(t1); wyswietl; writeln; writeln('Wcisnij jakis klawisz...'); Klawisz2:=readkey; { program czeka na wcisnięcie dowolneko klawisza } end; if Klaw='4' then begin wszystko; info; end; if Klaw='5' then czytaj; if Klaw='6' then zapisz; if Klaw='7' then begin clrscr; info; end; until Klaw='8'; { koniec petli głównej programu} end. [/code] Link to comment Share on other sites More sharing options...
DarkAndrew Posted January 31, 2007 Report Share Posted January 31, 2007 opis quicksorta masz na wikipedi polskiej i angielskiej nawet masz gotowy kod..... wklej i koniec kłopotuquicksort jest łatwy do zapamiętania dość szybki i wydajny do tego łatwo się go pisze. Ot takie moje spostrzeżenia, używajcie nawet bąbelkowego jak wam nie zależy na szybkości:P "Może wam pomoge, może nie, może pierdolcie w dupę się"-prof. Jarząbek Link to comment Share on other sites More sharing options...
Blind Posted January 31, 2007 Report Share Posted January 31, 2007 Się uczepiliście tego QSorta ja tam wole przez Scalanie fajne jest i tez wydajne. Jeszcze polecam sortowanie kopcowe http://ww.umk.pl/~abak/wdimat/s/Index.html - fajna stronka opisujaca algorytmy sortujace, mozna tez porownywac ktory jest szybszy . www.blinder.pl - Blog Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.