logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

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

marszalek_duck 07 Lip 2009 01:22 1418 6
REKLAMA
  • #1 6747253
    marszalek_duck
    Poziom 17  
    Posty: 346
    Pomógł: 5
    Ocena: 11
    [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.
  • REKLAMA
  • #2 6747392
    chudybyk
    Poziom 32  
    Posty: 1537
    Pomógł: 196
    Ocena: 297
    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!
  • REKLAMA
  • #3 6747721
    marszalek_duck
    Poziom 17  
    Posty: 346
    Pomógł: 5
    Ocena: 11
    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ć.
  • REKLAMA
  • #4 6747835
    chudybyk
    Poziom 32  
    Posty: 1537
    Pomógł: 196
    Ocena: 297
    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.
  • #5 6749287
    marszalek_duck
    Poziom 17  
    Posty: 346
    Pomógł: 5
    Ocena: 11
    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


    Cytat:
    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.
    Cytat:
  • #6 6749777
    chudybyk
    Poziom 32  
    Posty: 1537
    Pomógł: 196
    Ocena: 297
    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().
  • REKLAMA
  • #7 6750268
    marszalek_duck
    Poziom 17  
    Posty: 346
    Pomógł: 5
    Ocena: 11
    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

Podsumowanie tematu

✨ Dyskusja dotyczy problemu sortowania wpisów (imię i nazwisko) w bazie danych napisanej w Pascalu, z zamiarem wyświetlenia ich w kolejności alfabetycznej A-Z. Autor ma już przygotowaną bazę danych, ale napotyka trudności z implementacją algorytmu sortowania tekstów. Proponowano zastosowanie sortowania bąbelkowego na indeksach oraz porównywanie ciągów tekstowych. Zasugerowano, że w Pascalu można bezpośrednio porównywać łańcuchy znaków za pomocą operatorów relacyjnych (np. if ciag1 > ciag2), co uprości implementację. Wskazano również możliwość wykorzystania funkcji ord() i chr() do porównywania znaków według wartości ASCII. Autor potwierdził, że ta metoda rozwiązuje problem i umożliwia efektywne sortowanie wpisów alfabetycznie.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA