Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Sortowanie wpisów A-Z, wyświetlanie wszystkich wpisów.

07 Jul 2009 01:22 1229 6
  • Level 17  
    [PASCAL]

    Witam od razu na wstępie chciałbym przeprosić gdyż nie jestem pewien czy dobrze wstawiłem posta.

    W ramach dosalania piszę sobie w Pascalu bazę danych.
    Napisałem już dodawanie wpisów i w nich wierszy i stron zapis zapis ustawień języka i opcji i zatrzymałem się na czymś co uważałem za najprostsze a co na razie okazało się moja zmorą.

    O tuż chciałem stworzyłem wyświetlanie wszystkich wpisów (samo imię i nazwisko jako w menu...) i chciałem aby było to posortowane w A-Z
    Na samym początku wpadłem na pomysł aby każda literka miała jakaś wartość i aby przeglądało imię i nazwisko i sprawdzało jakie są literki i dodawało wartości cięki czemu za pomocą jakiegoś sortowania belkowego można by określić położenie wpisu. Niestety pomysł nie wypalił, do przeglądnięcia chciałem użyć funkcji LENGHT ale chyba coś z........ teraz wo gule nie mam pomysłu jak to zrobić.

    Chciałbym prosić czy jak ktoś pisał już coś podobnego lub ma jakiś pomysł, lub ma jakąś sugestie to bardzo by prosił o jakąś pomoc.
    [30.03.2021, darmowy webinar] Nowoczesna diagnostyka maszyn, monitorowanie i przewidywanie awarii. Zarejestruj się
  • Level 30  
    Witam!
    Może napiszesz, jak masz zorganizowaną tę bazę danych? Przynajmniej najważniejsze rekordy, indeksy itp.
    Trudność sprawia Ci sam algorytm sortowania, czy jakiś problem techniczny z bazą?
    Myślę, że dobrym pomysłem jest wprowadzenie do rekordu dodatkowego pola, którym poindeksujesz sobie bazę. Potem w tabeli możesz zapamiętać ułożone według kolejności odnośniki rekordów.
    Spróbuj popracować nad ortografią.
    Pozdrawiam!
  • Level 17  
    No właśnie w bazie jest już wszystko przygotowane do tego sortowania tylko sam algorytm mi sprawił problem. Nie mam pojęcia jak się za to zabrać.
  • Level 30  
    Algorytmów sortowania znajdziesz całą masę. Na przykład sortowanie bąbelkowe:
    http://pl.wikisource.org/wiki/Sortowanie_b%C4%85belkowe/kod
    W przykładach porównuje się liczby, a nie ciągi tekstu, ale wystarczy napisać procedurkę porównującą dwa ciągi tekstowe. Porównujesz wtedy ciągi, ale sortujesz liczby - indeksy.
    Być może w Twojej odmianie Pascala jest procedura porównująca ciągi tekstowe. Poszukaj, ewentualnie napisz sam - nie jest skomplikowana.
    Rzuć kawałkiem kodu, który już masz, to naprowadzimy Cię bardziej.
  • Level 17  
    No tak jak pisałem próbowałem zrobić właśnie coś w tym stylu (znam na pamięć babelkowom i podstawiania i pochodne!!!!!!!) ale nie mam pojęcia jak zrobić porównanie ciągu tekstu.

    może wkleję kodzik bo jestem bliki tego ale jest w tym jakiś błąd


    Quote:
    for i:=1 to max do
    begin
    ciong:=s[i];
    przechowaj[i]:=0;




    for ii:=65 to 90 do
    begin


    if ciong[ia]=chr(ii) then inc(przechowaj[i],ia);

    inc(ia);

    end;


    end;





    zasada miała być taka ze do poszczególnych literek jest "przydzielona" jakaś liczba i ze "skanuje" cały ciąg i dodaje liczby potem można by to było przepościć przez jakieś sortowanie bąbelkowe i wszystko było by okej tylko coś z........ w tym kodzie i cały czas pokazuje mi to samo.
    Quote:
  • Level 30  
    Zupełnie nie wiem o co chodzi w Twoim kodzie.
    Nie jestem pewny, czy nie można w Pascalu porównać wprost dwóch ciągów tak:
    if ciag1 > ciag2 then costamdalej;
    Ewentualnie zdefiniuj funkcję, która porówna dwa ciągi po znaku i zwróci wartość boolean np. kiedy kolejny znak pierwszego jest "większy" od drugiego - czyli kiedy porównywany znak ma większą wartość ascii - do zamiany służą funkcje chr() i ord().
  • Level 17  
    O w mordkę, że ja o tym nie pomyślałem. Ja siedzę i kombinuję nad tym chyba z tydzień, spać nie mogę a to przecież działa jak na liczbach. W ogóle nie wziąłem tego pod uwagę, że można tak na string operować.

    WIELKIE dzięki