Seznam a třídění vkládáním – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Seznam a třídění vkládáním – Pascal – Fórum – Programujte.comSeznam a třídění vkládáním – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Pierre
~ Anonymní uživatel
5 příspěvků
12. 6. 2014   #1
-
0
-

Dobrý den,

pokouším se naprogramovat třídění vkládáním v jednosměrném zřetězeném seznamu a program funguje zhruba na každý pátý pokus, jinak hodí runtime chybu 216 - asi odkazuji na nulový ukazatel. Ale nevím kde a proč program někdy funguje a někdy ne.

Kód programu je zde: http://tny.cz/4fcf5b39

Tady je pomocná knihovna pro práci se seznamem: http://tny.cz/66892410

Díky za jakoukoli pomoc!

Nahlásit jako SPAM
IP: 77.240.103.–
Reklama
Reklama
peter
~ Anonymní uživatel
2539 příspěvků
12. 6. 2014   #2
-
0
-

http://www.freepascal.org/docs-html/user/userap4.html

216 General Protection fault
The application tried to access invalid memory space. This can be caused by several problems:

Dereferencing a nil pointer.
Trying to access memory which is out of bounds (for example, calling move with an invalid length).
 

while (y^.data > x^.data) and (x^.dalsi<>setrideny.konec) do x:=x^.dalsi;

Co, kdyz je x^.dalsi = nil? Ja teda v pascalu uz radu let nic nedelal a cela ta konstrukce je mi zahadou, jak asi funguje, ale predpokladam, ze to tak nejak pri vytvareni naplnuje pole data, dalsi, konec. A jestlize v tom poli nebude odkaz na dalsi radek, pak tam bude co? A co se stane, kdyz to neco zacnes porovnavat? Kdyz na tu druhou podminku pro ten posledni radek vubec nedojde, tak program asi funguje.
Pripadne si muzes to pole/objekt pri kazdem prujezdu cyklu cele vypsat, abys videl, co je ulozene v promennych.
Jinak, vyjmy, vyhledej, vloz..., spoustu funkci. Ale hlavni vec, kdyz to funguje.

Nahlásit jako SPAM
IP: 2001:718:2601:258:91a4:e0...–
Pierre
~ Anonymní uživatel
5 příspěvků
12. 6. 2014   #3
-
0
-

Tak už se mi to podařilo zprovoznit. Staci nahradit x^.dalsi <> konec tímto: x^.dalsi <> nil.

Nahlásit jako SPAM
IP: 77.240.103.–
Pierre
~ Anonymní uživatel
5 příspěvků
12. 6. 2014   #4
-
0
-

Ale je to celé záhad. Například tento http://tny.cz/e6fedd17 kód pro binární vyhledávání taky funguje dle libosti.

Nahlásit jako SPAM
IP: 77.240.103.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Třídění — založil Frantisek

Třídění čísel — založil Kaja

Pole a třídění — založil sXe

Třídění řádků v C — založil lukas011

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý