Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 11.12.09 Prihlásený: 30.06.11 Príspevky: 26 Témy: 8 | 8 |
Ahojte potreboval by som pomoc s mojim programom. Jedna sa o smerniky v pascale a problem mam s mazanim smernika a hladanim smernika.
Mozte sa nato pozret a podarit mi. Uz sa s tym trapim dost a nejak stale mi to nejde.
Aj si to kreslim na papier a nic.
Kód: PROGRAM ZVIERATKA; TYPE UK=^ZVIERA; ZVIERA=RECORD MENO:STRING[50]; DRUH:STRING[50]; MAJITEL:STRING[50]; DALSI:UK; END; VAR R:UK; A:CHAR;
PROCEDURE VLOZ (VAR Z:UK); VAR PP:UK; MENO:STRING; DRUH:STRING; MAJITEL:STRING;
BEGIN NEW (PP); WRITELN ('ZADAJ MENO ZVIERATA'); READLN (MENO); PP^.MENO:=MENO; WRITELN ('ZADAJ DRUH ZVIERATA'); READLN (DRUH); PP^.DRUH:=DRUH; WRITELN ('ZADAJ MAJITELA'); READLN (MAJITEL); PP^.MAJITEL:=MAJITEL; PP^.DALSI:=Z; Z:=PP; END;
PROCEDURE VYPIS (Z:UK); VAR PP:UK; BEGIN PP:=Z; WRITELN ('MENA ZVIERAT SU:'); WHILE (PP<>NIL) DO BEGIN WRITELN (PP^.MENO,' '); PP:=PP^.DALSI; END; END;
PROCEDURE ZRUS (VAR Z:UK); VAR Q,PP:UK; MENO:STRING; BEGIN WRITELN ('ZADAJ MENO ZVIERATA KTOREHO POLOZKU CHCETE ZRUSIT'); READLN (MENO); PP:=Z; IF (MENO=PP^.MENO) THEN BEGIN Z:=Z^.DALSI; DISPOSE (PP); END ELSE Z:=Z^.DALSI; WHILE PP<>NIL DO BEGIN IF (Z^.MENO=MENO) THEN BEGIN Z:=Z^.DALSI; Q:=PP; PP:=PP^.DALSI; Q^.DALSI:=Z^.DALSI; DISPOSE (PP); END; END; END;
FUNCTION HLADAJMAJITEL (Z:UK):UK; VAR PP:UK; X:STRING;
BEGIN HLADAJMAJITEL:=NIL; PP:=Z; IF (Z=NIL) THEN BEGIN WRITELN ('ZOZNAM JE PRAZDNY'); EXIT; END; WRITELN ('ZADAJ MAJITELA'); READLN (X); BEGIN WHILE (PP<>NIL) DO BEGIN IF (X=PP^.MAJITEL) THEN BEGIN WRITELN ('PRVOK SA NASIEL',X); HLADAJMAJITEL:=PP; BREAK; END; END; END; END;
FUNCTION HLADAJDRUH (Z:UK):UK; VAR PP:UK; X:STRING;
BEGIN HLADAJDRUH:=NIL; PP:=Z; IF (Z=NIL) THEN BEGIN WRITELN ('ZOZNAM JE PRAZDNY'); EXIT; END; WRITELN ('ZADAJ DRUH ZVIERATA'); READLN (X); BEGIN WHILE (PP<>NIL) DO BEGIN IF (X=PP^.DRUH) THEN BEGIN WRITELN ('PRVOK SA NASIEL',X); HLADAJDRUH:=PP; BREAK; END; END; END; END;
BEGIN REPEAT WRITELN ('V - VLOZENIE NOVEJ POLOZKY'); WRITELN ('Z - ZRUSENIE EVIDENCIE'); WRITELN ('M - HLADANIE PODLA MAJITELA'); WRITELN ('D - HLADANIE PODLA DRUHU'); WRITELN ('K - KONIEC PROGRAMU'); WRITELN ('U - VYPIS MIEN ZVIERAT'); READLN (A); CASE A OF 'V': VLOZ (R); 'U': VYPIS (R); 'Z': ZRUS (R); 'M': HLADAJMAJITEL (R); 'D': HLADAJDRUH (R); END UNTIL (A='K'); END.
Prosim Vas kto vie pomozte mi Dakujem velmi pekne [/code]
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | 2 |
co znamena "nejak mi to nejde" ? pada to na nejakej chybe ? alebo to neodmazava ? alebo ako si to mame vysvetlit ?
pozri si vyhladavania, pokial das hladat prvok ktory je najdeny hned prvy tak je to OK, no pokial prvy najdeny prvok nesedi tak kde nacitavas nasledujuci prvok ? ved ti to padne do nekonecnej slucky !
|
|
Registrovaný: 11.12.09 Prihlásený: 30.06.11 Príspevky: 26 Témy: 8 | 8 |
Program mi spusti a zadavanie novych poloziek mi tiez funguje ale problem je ze nemozem zmazat polozky - ked to dam tak mi bud sa spusti cyklus ktory trva stale a tak musim potom vypnut cely program alebo mi vypise chybu a spadne program ...
A ohladom hladania tak prvy prvok mi vie najst ale dalsie uz nie a ked chcem dat vyhladat dalsie tak mi hodi nekonecny cyklus a mam zasa program dole...
Potrebujem to aby mi niekto povedal a ak je to aj mozne aby mi ukazal ako by to malo byt spravne.
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | 2 |
si robis srandu ? vo vyhladavacom cykle stale testujes tu istu hodnotu
Kód: WHILE (PP<>NIL) DO BEGIN IF (X=PP^.DRUH) THEN BEGIN WRITELN ('PRVOK SA NASIEL',X); HLADAJDRUH:=PP; BREAK; // ak najdes prvok tak cyklus skonci END; // ak prvok nenajdes tak by bolo vhodne ho vymenit za dalsi PP := PP^.DALSI; END;
ohladom padania pri mazani , bolo by vhodne najprv otestovat
ci Z^.DALSI obsahuje nejaky pointer a az potom ho priradit
|
|
Registrovaný: 11.12.09 Prihlásený: 30.06.11 Príspevky: 26 Témy: 8 | 8 |
Takze vyhladavanie som uz upravil a vsetko mi ide v poriadku.
Ale s tym mazanim to je stale zle. Mam mazanie zatial spravene tak ze ak je prazdny zoznam tak mi napise ze je prazdny teda je to v poriadku, dalej mam spravene aj to ze prvy prvok mi vie zmazat teda aj toto je v poriadku a mam spravene aj to ze od druheho a dalej tak ked chcem vymazat tak mi spravi to ze mi vymaze ale aj so vsetkym co mam predtym teda problem je vtom (odhadujem) ze sa mi pretrhol spojovy zoznam a nejak neviem napojit prvy a treti prvok aby som mohol ten druhy zmazat.
Neviem ci chapes co myslim ? Dufam ze ano
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | 2 |
no toto by malo fungovat
Kód: PROCEDURE ZRUS (VAR Z:UK); VAR Q,PP:UK; MENO:STRING; BEGIN PP:=Z; Q := Z; IF (Z=NIL) THEN BEGIN WRITELN ('ZOZNAM JE PRAZDNY'); EXIT; END; WRITELN ('ZADAJ MENO ZVIERATA KTOREHO POLOZKU CHCETE ZRUSIT'); READLN (MENO); BEGIN WHILE (PP<>NIL) DO BEGIN IF (MENO=PP^.MENO) THEN BEGIN if Z = PP then begin // ak pp je najvyssi prvok if PP^.dalsi <> nil then // ak existuju aj nasledujuci prvok Z := PP^.dalsi // posuniem nasledujuci prvok na prve miesto else Z := nil; // zrusim aktualny a zaroven jediny prvok end else if PP^.dalsi <> nil then // ak existuju aj nasledujuci prvok Q^.dalsi := PP^.dalsi // posuniem nasledujuci prvok na miesto vymazaneho else Q^.dalsi := nil; //neexistuje dalsi prvok takze iba zrusim odkaz na vymazany prvok
DISPOSE(PP); BREAK; END; Q := PP; // ak sa prvok nezhoduje odlozim si ho koli reorganizacii PP := PP^.DALSI; // posuniem sa na dalsi prvok END; END; END;
|
|
Registrovaný: 11.12.09 Prihlásený: 30.06.11 Príspevky: 26 Témy: 8 | 8 |
Ok coldak dakujem velmi pekne
Program je hotovy a funguje vsetko ako ma.
Este raz dakujem
Moderatori mozte temu zatvorit!
|
|
Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| [ Choď na stránku: 1, 2 ] v Optické zariadenia | 58 | 3568 | 06.01.2008 16:57 jarod242 | | v PHP, ASP | 1 | 408 | 16.03.2009 8:21 stenley | | v Assembler, C, C++, Pascal, Java | 10 | 8280 | 09.10.2014 8:24 BX | | v Assembler, C, C++, Pascal, Java | 6 | 2095 | 11.05.2009 8:48 sangokoko | | v Assembler, C, C++, Pascal, Java | 1 | 1196 | 28.03.2009 10:05 neutronmind | | v Assembler, C, C++, Pascal, Java | 6 | 1455 | 27.03.2009 17:42 programator | | v Assembler, C, C++, Pascal, Java | 4 | 480 | 12.09.2012 7:43 strider | | v Assembler, C, C++, Pascal, Java | 0 | 430 | 19.12.2014 13:18 Styracoz | | v Assembler, C, C++, Pascal, Java | 2 | 394 | 11.04.2012 1:34 Gregi555 | | v Assembler, C, C++, Pascal, Java | 2 | 560 | 23.06.2008 17:30 petos | | v Assembler, C, C++, Pascal, Java | 18 | 1165 | 14.01.2008 12:59 hawe | | v Assembler, C, C++, Pascal, Java | 3 | 993 | 14.12.2009 18:39 Proxy69 | | v Assembler, C, C++, Pascal, Java | 6 | 987 | 28.06.2008 2:11 Roberbo | | v Assembler, C, C++, Pascal, Java | 3 | 515 | 24.12.2010 16:25 Goergius | | v Assembler, C, C++, Pascal, Java | 19 | 3115 | 30.04.2007 19:54 nikita | | v Assembler, C, C++, Pascal, Java | 0 | 745 | 03.05.2009 12:35 ebb |
|