[ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.09
Prihlásený: 22.06.09
Príspevky: 8
Témy: 2 | 2

Ahojte, potrebujem, aby sa mi zoradili jednotlive záznamy pola podla toho, co si zvoli uzivatel: teda jedno z: nazov,autor,vydavatelsto,rokvydania alebo pocet stran. K nazvu som sa asi dopracoval (aj ked nie na 100% ale nejde mi do hlavy co s ostatnymi) ....pomozete mi prosim? tu je kod procedury triedenia ...ak budete potrebovat viac zverejnim tu aj to :)
Kód:
procedure utried(DLZKA:integer); {procedúra na usporiadanie}
var
    i, j:integer;
    pom: kniha;

begin
 clrscr;
 writeln('zadajte podla coho chcete zaznamy zoradit v databaze: ');
 writeln;
 textcolor(9);
 writeln('1 - nazov knihy');
 textcolor(10);
 writeln('2 - meno autora');
 textcolor(11);
 writeln('3 - vydavatelstvo');
 textcolor(12);
 writeln('4 - rok vydania');
 textcolor(13);
 writeln('5 - pocet stran');
 textcolor(12);
 writeln;
 case a of
  '1':begin
  for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
        if kniznica[i].nazov>kniznica[j].nazov then
                begin
                 pom.nazov:=kniznica[i].nazov;
                 pom.autor:=kniznica[i].autor;
                 pom.vydavatelstvo:=kniznica[i].vydavatelstvo;
                 pom.rokvyd:=kniznica[i].rokvyd;
                 pom.pocets:=kniznica[i].pocets;

                 kniznica[i].nazov:=kniznica[j].nazov;
                 kniznica[i].autor:=kniznica[j].autor;
                 kniznica[i].vydavatelstvo:=kniznica[j].vydavatelstvo;
                 kniznica[i].rokvyd:=kniznica[j].rokvyd;
                 kniznica[i].pocets:=kniznica[j].pocets;

                 kniznica[j].nazov:=pom.nazov;
                 kniznica[j].autor:=pom.autor;
                 kniznica[j].vydavatelstvo:=pom.vydavatelstvo;
                 kniznica[j].rokvyd:=pom.rokvyd;
                 kniznica[j].pocets:=pom.pocets;
                end;  end;
  '2':begin
  for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
        if kniznica[i].autor>kniznica[j].autor then
                begin
                 pom.nazov:=kniznica[i].nazov;
                 pom.autor:=kniznica[i].autor;
                 pom.vydavatelstvo:=kniznica[i].vydavatelstvo;
                 pom.rokvyd:=kniznica[i].rokvyd;
                 pom.pocets:=kniznica[i].pocets;

                 kniznica[i].nazov:=kniznica[j].nazov;
                 kniznica[i].autor:=kniznica[j].autor;
                 kniznica[i].vydavatelstvo:=kniznica[j].vydavatelstvo;
                 kniznica[i].rokvyd:=kniznica[j].rokvyd;
                 kniznica[i].pocets:=kniznica[j].pocets;

                 kniznica[j].nazov:=pom.nazov;
                 kniznica[j].autor:=pom.autor;
                 kniznica[j].vydavatelstvo:=pom.vydavatelstvo;
                 kniznica[j].rokvyd:=pom.rokvyd;
                 kniznica[j].pocets:=pom.pocets;
                end;  end;
  '3':begin
  for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
        if kniznica[i].vydavatelstvo>kniznica[j].vydavatelstvo then
                begin
                 pom.nazov:=kniznica[i].nazov;
                 pom.autor:=kniznica[i].autor;
                 pom.vydavatelstvo:=kniznica[i].vydavatelstvo;
                 pom.rokvyd:=kniznica[i].rokvyd;
                 pom.pocets:=kniznica[i].pocets;

                 kniznica[i].nazov:=kniznica[j].nazov;
                 kniznica[i].autor:=kniznica[j].autor;
                 kniznica[i].vydavatelstvo:=kniznica[j].vydavatelstvo;
                 kniznica[i].rokvyd:=kniznica[j].rokvyd;
                 kniznica[i].pocets:=kniznica[j].pocets;

                 kniznica[j].nazov:=pom.nazov;
                 kniznica[j].autor:=pom.autor;
                 kniznica[j].vydavatelstvo:=pom.vydavatelstvo;
                 kniznica[j].rokvyd:=pom.rokvyd;
                 kniznica[j].pocets:=pom.pocets;
                end;  end;
  '4':begin for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
        if kniznica[i].rokvyd>kniznica[j].rokvyd then
                begin
                 pom.nazov:=kniznica[i].nazov;
                 pom.autor:=kniznica[i].autor;
                 pom.vydavatelstvo:=kniznica[i].vydavatelstvo;
                 pom.rokvyd:=kniznica[i].rokvyd;
                 pom.pocets:=kniznica[i].pocets;

                 kniznica[i].nazov:=kniznica[j].nazov;
                 kniznica[i].autor:=kniznica[j].autor;
                 kniznica[i].vydavatelstvo:=kniznica[j].vydavatelstvo;
                 kniznica[i].rokvyd:=kniznica[j].rokvyd;
                 kniznica[i].pocets:=kniznica[j].pocets;

                 kniznica[j].nazov:=pom.nazov;
                 kniznica[j].autor:=pom.autor;
                 kniznica[j].vydavatelstvo:=pom.vydavatelstvo;
                 kniznica[j].rokvyd:=pom.rokvyd;
                 kniznica[j].pocets:=pom.pocets;
                end;  end;
  '5':begin
  for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
        if kniznica[i].pocets>kniznica[j].pocets then
                begin
                 pom.nazov:=kniznica[i].nazov;
                 pom.autor:=kniznica[i].autor;
                 pom.vydavatelstvo:=kniznica[i].vydavatelstvo;
                 pom.rokvyd:=kniznica[i].rokvyd;
                 pom.pocets:=kniznica[i].pocets;

                 kniznica[i].nazov:=kniznica[j].nazov;
                 kniznica[i].autor:=kniznica[j].autor;
                 kniznica[i].vydavatelstvo:=kniznica[j].vydavatelstvo;
                 kniznica[i].rokvyd:=kniznica[j].rokvyd;
                 kniznica[i].pocets:=kniznica[j].pocets;

                 kniznica[j].nazov:=pom.nazov;
                 kniznica[j].autor:=pom.autor;
                 kniznica[j].vydavatelstvo:=pom.vydavatelstvo;
                 kniznica[j].rokvyd:=pom.rokvyd;
                 kniznica[j].pocets:=pom.pocets;
                end;  end;

end;
readln;
end;


Offline

Skúsený užívateľ
Skúsený užívateľ
Pascal - triedenie podla jednotlivych poloziek záznamov

Registrovaný: 10.07.07
Prihlásený: 02.11.17
Príspevky: 1060
Témy: 0 | 0
Bydlisko: Bratislava

ides na to zle,, nie je co opravovat


_________________
Nebo je modre, voda je mokra...
Offline

Skúsený užívateľ
Skúsený užívateľ
Pascal - triedenie podla jednotlivych poloziek záznamov

Registrovaný: 11.01.09
Prihlásený: 25.04.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova

Napísal si, že to triedenie podľa mena ti funguje? Ja neviem, ale to porovnanie
Kód:
 if (kniznica[i].nazov > kniznica[j].nazov) then

mi akosi nejde do hlavy. Týmto podľa mňa porovnávaš, ktorý z týchto reťazcov je uložený na vyššej adrese. Nie som si istý, ale mal by si to porovnávanie upraviť tak, aby ti to porovnávalo jenotlivé znaky týchto názvov.
Týmto kódom porovnas prvé znaky názvov:
Kód:
 if ( kniznica[i].nazov[1] ) > kniznica[j].nazov[1] )

Až takto sa porovnáva, ktorá hodnota znaku je vyššia. Skús to nejako takto upraviť (namiesto tej jednotky tam musíš dať opäť nejaký cyklus, abi ti to porovnávalo aj ďalšie znaky), a keby si niečomu nerozumel, kludne napíš.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.09
Prihlásený: 22.06.09
Príspevky: 8
Témy: 2 | 2

Aha :) vedel som ze v niecom bude chyba :) dakujem....no dobre...dal som to porovnavanie jednotlivych znakov, akurat ze neviem dokedy....do dlzky retazca?...length ?


Offline

Skúsený užívateľ
Skúsený užívateľ
Pascal - triedenie podla jednotlivych poloziek záznamov

Registrovaný: 11.01.09
Prihlásený: 25.04.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova

Presne tak, do dĺžky reťazca, ale stačí do toho kratšieho. Takže ešte pred tým si musíš zistiť, ktorý je kratší. Ako si napísal, zistíš to podľa funkcie Length.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.09
Prihlásený: 22.06.09
Príspevky: 8
Témy: 2 | 2

nieco tam mam stale zle pretoze to nezoraduje....
Kód:
begin
 clrscr;
    for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
         dlzkaretazca1:=length(kniznica[i].nazov);
         dlzkaretazca2:=length(kniznica[j].nazov);
         if dlzkaretazca1>=dlzkaretazca2 then maxdlzkaretazca:=dlzkaretazca1
                                         else maxdlzkaretazca:=dlzkaretazca2;
          for k:=1 to maxdlzkaretazca do
           if kniznica[i].nazov[k]>kniznica[j].nazov[k] then


Offline

Užívateľ
Užívateľ
Pascal - triedenie podla jednotlivych poloziek záznamov

Registrovaný: 16.05.07
Prihlásený: 01.08.17
Príspevky: 837
Témy: 6 | 6

na moje posudzovacie schopnosti moc malo beginov a endov


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 03.12.25
Príspevky: 884
Témy: 3 | 3

kenny8911: bolo to spravne... V Pascale mozes retazce porovnavat normalne pomocou >, <, >=, <=, =, <>, pricom plati, ze napr. retazec "aaa" je mensi ako "aba"...
Zda sa mi aj, ze v Pascale mozes priradit celu strukturu dalsej, teda nemusis to robit po kazdej polozke (tym padom by malo ist aj napr. pom:=kniznica[i]). ;)

//EDIT: Tu to mas narychlo opravene, ale malo by to fungovat korektne...
Kód:
procedure utried(DLZKA:integer); {procedúra na usporiadanie}
var
    i, j:integer;
    pom: kniha;

begin
 clrscr;
 writeln('Zadajte podla coho chcete zaznamy zoradit v databaze: ');
 writeln;
 textcolor(9);
 writeln('1 - nazov knihy');
 textcolor(10);
 writeln('2 - meno autora');
 textcolor(11);
 writeln('3 - vydavatelstvo');
 textcolor(12);
 writeln('4 - rok vydania');
 textcolor(13);
 writeln('5 - pocet stran');
 textcolor(12);
 writeln;
 case a of
  '1':begin
  for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
        if kniznica[i].nazov>kniznica[j].nazov then
                begin
                 pom:=kniznica[i];
                 kniznica[i]:=kniznica[j];
                 kniznica[j]:=pom;
                end;  end;
  '2':begin
  for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
        if kniznica[i].autor>kniznica[j].autor then
                begin
                 pom:=kniznica[i];
                 kniznica[i]:=kniznica[j];
                 kniznica[j]:=pom;
                end;  end;
  '3':begin
  for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
        if kniznica[i].vydavatelstvo>kniznica[j].vydavatelstvo then
                begin
                 pom:=kniznica[i];
                 kniznica[i]:=kniznica[j];
                 kniznica[j]:=pom;
                end;  end;
  '4':begin for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
        if kniznica[i].rokvyd>kniznica[j].rokvyd then
                begin
                 pom:=kniznica[i];
                 kniznica[i]:=kniznica[j];
                 kniznica[j]:=pom;
                end;  end;
  '5':begin
  for i:=1 to DLZKA-1 do
        for j:=i+1 to DLZKA do
        if kniznica[i].pocets>kniznica[j].pocets then
                begin
                 pom:=kniznica[i];
                 kniznica[i]:=kniznica[j];
                 kniznica[j]:=pom;
                end;  end;

end;
readln;
end;


_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.09
Prihlásený: 22.06.09
Príspevky: 8
Témy: 2 | 2

ide to :-) chyba readln(a); pred case.....dakujem este raz


 [ Príspevkov: 9 ] 


Pascal - triedenie podla jednotlivych poloziek záznamov



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Pascal - triedenie

v Ostatné

6

1703

05.03.2009 2:36

TrSek

V tomto fóre nie sú ďalšie neprečítané témy.

Triedenie podľa textu

v Backend

12

625

29.05.2012 9:43

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

Pascal - triedenie + vyhladavanie

v Ostatné

0

451

22.11.2012 17:21

Reason166

V tomto fóre nie sú ďalšie neprečítané témy.

foobar2000 triedenie podla priecinka

v Audio programy

0

610

02.05.2010 9:03

Johnnny

V tomto fóre nie sú ďalšie neprečítané témy.

Pascal - Zoradenie 5 čísel podľa veľksti

v Ostatné

8

1971

12.03.2010 21:48

juho

V tomto fóre nie sú ďalšie neprečítané témy.

WIN7-usporiadanie podla typu a zaroven podla datumu

v Windows

1

877

10.10.2011 17:16

Logik

V tomto fóre nie sú ďalšie neprečítané témy.

Označenie položiek

v Frontend

1

774

23.02.2008 20:37

Ded'leg

V tomto fóre nie sú ďalšie neprečítané témy.

presúvanie položiek

v Frontend

0

540

13.11.2009 19:12

neXor

V tomto fóre nie sú ďalšie neprečítané témy.

vypis jedinecnych poloziek

v Databázy

5

2800

18.02.2018 16:08

neopagan

V tomto fóre nie sú ďalšie neprečítané témy.

Zapis viac poloziek

v Databázy

18

1451

30.12.2009 11:17

djsulo

V tomto fóre nie sú ďalšie neprečítané témy.

Strata poloziek v BIOSe

v Biosy a ladenie výkonu

24

1229

05.08.2007 21:54

honda

V tomto fóre nie sú ďalšie neprečítané témy.

Delphi7: Zobrazovanie moznych poloziek

v Ostatné

2

681

25.12.2008 17:38

Loko11

V tomto fóre nie sú ďalšie neprečítané témy.

Free Pascal a Turbo Pascal

v Ostatné

0

473

19.12.2014 13:18

Styracoz

V tomto fóre nie sú ďalšie neprečítané témy.

zmena položiek dialogoveho okna vo winXP

v Windows

3

466

10.05.2010 16:32

harm22

V tomto fóre nie sú ďalšie neprečítané témy.

Porovnanie jednotlivych CMS

v CMS

1

1482

04.03.2010 16:32

don jebot

V tomto fóre nie sú ďalšie neprečítané témy.

Rozsirene triedenie

v Backend

6

605

10.12.2010 10:50

psm



© 2005 - 2026 PCforum, edited by JanoF