Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ 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
Príspevok NapísalOffline : 07.02.2009 20:33

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
Bydlisko: Bratislava
Príspevok NapísalOffline : 08.02.2009 2:25

ides na to zle,, nie je co opravovat







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

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

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOnline : 08.02.2009 9:39

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
Príspevok Napísal autor témyOffline : 08.02.2009 11:08

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 ?


Online

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

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOnline : 08.02.2009 12:21

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
Príspevok Napísal autor témyOffline : 08.02.2009 12:41

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
Príspevok NapísalOffline : 08.02.2009 14:08

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ý: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 08.02.2009 14:21

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
Príspevok Napísal autor témyOffline : 08.02.2009 19:25

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


Odpovedať na tému [ Príspevkov: 9 ] 


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 Assembler, C, C++, Pascal, Java

6

1606

05.03.2009 2:36

TrSek Zobrazenie posledných príspevkov

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

v PHP, ASP

12

553

29.05.2012 9:43

Ďuri Zobrazenie posledných príspevkov

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

v Assembler, C, C++, Pascal, Java

0

386

22.11.2012 17:21

Reason166 Zobrazenie posledných príspevkov

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

v Audio programy

0

531

02.05.2010 9:03

Johnnny Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal - Zoradenie 5 čísel podľa veľksti

v Assembler, C, C++, Pascal, Java

8

1865

12.03.2010 21:48

juho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. WIN7-usporiadanie podla typu a zaroven podla datumu

v Operačné systémy Microsoft

1

723

10.10.2011 17:16

Logik Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

1

688

23.02.2008 20:37

Ded'leg Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

0

470

13.11.2009 19:12

neXor Zobrazenie posledných príspevkov

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

v Databázy

18

1368

30.12.2009 11:17

djsulo Zobrazenie posledných príspevkov

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

v Databázy

5

2032

18.02.2018 16:08

neopagan Zobrazenie posledných príspevkov

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

v Biosy a ladenie výkonu

24

1122

05.08.2007 21:54

honda Zobrazenie posledných príspevkov

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

v Delphi, Visual Basic

2

609

25.12.2008 17:38

Loko11 Zobrazenie posledných príspevkov

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

v Assembler, C, C++, Pascal, Java

0

385

19.12.2014 13:18

Styracoz Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zmena položiek dialogoveho okna vo winXP

v Operačné systémy Microsoft

3

403

10.05.2010 16:32

harm22 Zobrazenie posledných príspevkov

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

v Redakčné systémy

1

1418

04.03.2010 16:32

don jebot Zobrazenie posledných príspevkov

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

v Ostatné programy

1

487

04.06.2014 7:47

mirom Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  
cron

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra