Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
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;
|
|
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... |
|
Registrovaný: 11.01.09 Prihlásený: 06.03.25 Príspevky: 1397 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íš.
|
|
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 ?
|
|
Registrovaný: 11.01.09 Prihlásený: 06.03.25 Príspevky: 1397 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.
|
|
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
|
|
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
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 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… |
|
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
|
|
Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
 | v Assembler, C, C++, Pascal, Java | 6 | 1659 | 05.03.2009 2:36 TrSek |  | v PHP, ASP | 12 | 590 | 29.05.2012 9:43 Ďuri |  | v Assembler, C, C++, Pascal, Java | 0 | 419 | 22.11.2012 17:21 Reason166 |  | v Audio programy | 0 | 578 | 02.05.2010 9:03 Johnnny |  | v Assembler, C, C++, Pascal, Java | 8 | 1919 | 12.03.2010 21:48 juho |  | v Operačné systémy Microsoft | 1 | 833 | 10.10.2011 17:16 Logik |  | v JavaScript, VBScript, Ajax | 0 | 503 | 13.11.2009 19:12 neXor |  | v JavaScript, VBScript, Ajax | 1 | 734 | 23.02.2008 20:37 Ded'leg |  | v Databázy | 5 | 2657 | 18.02.2018 16:08 neopagan |  | v Databázy | 18 | 1412 | 30.12.2009 11:17 djsulo |  | v Delphi, Visual Basic | 2 | 656 | 25.12.2008 17:38 Loko11 |  | v Biosy a ladenie výkonu | 24 | 1167 | 05.08.2007 21:54 honda |  | v Assembler, C, C++, Pascal, Java | 0 | 441 | 19.12.2014 13:18 Styracoz |  | v Operačné systémy Microsoft | 3 | 433 | 10.05.2010 16:32 harm22 |  | v Redakčné systémy | 1 | 1445 | 04.03.2010 16:32 don jebot |  | v PHP, ASP | 6 | 570 | 10.12.2010 10:50 psm |
|