potřebovala bych poradit jak vypadá programový kód v Delphi. Mám dva stejně dlouhé seznamy (s prvky x1, x2, x3 a y1, y2, y3) s nichž se má vytvořit třetí lineární seznam, který bude sloučením obou stávajících. Nový lineární seznam má obsahovat prvky x1, y1, x2, y2, x3, y3 a v průběhu vytváření třetího seznamu se má uvolňovat prvky původních seznamů z paměti.
(Odpověď jsem hledala na google, ale stále tomu nerozumím, proto se obracím na Vás s prosbou o radu).
zalezi na tom jestli uz ty seznamy mas nebo je musis teprve udelat...
Velice zhruba jde o nekolik prvku samostatne v pameti, ktere na sebe odkazuji pomoci adres v pameti...
tj. prvni prvek ma taky adresu kde je druhy, druhy ma adresu kde je treti, a treti ma adresu nastavenou na null (nil) aby se dalo poznat ze uz nepokracuje... krome adres musi kazdy prvek obsahovat i hodnotu
(a ty prvky seznamu se samozrejme v pameti vytvareji az za behu)
tj. co potrebujes: ukazatele, dynamicka pamet, struktury
Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
no ted musis nekam ty zacatky ulozit ... pak uz akorat na preskacku davat do toho tretiho... a pokud mas mazat polozky z tech predchozich - staci pouzit to co uz existuje a ty dva seznamy jen nahodit na nil (ten prvopocatek)
Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
#6KIIV
tohle by byla zbylá část programového kódu, ze kterého se má vytvořit funkční aplikace (používám Lazarus). Programový kód se má zobecnit tak, aby to fungovalo na libovolný počet vagonků zadaný pomocí editovacího boxu.
no ucel je evidentne zadat cislo v textboxu, zmacknout tlacitko (vlozit do jednoho nebo druheho) - tj. vytvorit novy prvek, nastavit cislo (hlavne prevest) a pak pridat na konec spravneho seznamu....
spojeni je jen prochazeni tech seznamu na preskacku a vkladani podobnym zpusobem jako vkladani prvku
pak oba zpracovane seznamy vyprazdnit
prochazeni je o cyklech, mazani je taky o cyklech (jen si pod sebou "nepodrezat vetev")
ale psat kod ted nehodlam.. leda ze by se nasel nekdo jinej komu se do toho chce
Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
var temp,novy: Pvag;
begin
new(novy); // novy prvek
novy^.obsah:= ??preved??(?form.input??); // textboxy sou jako retezce
novy^.dalsi:= nil; // nema nic za sebou (hlavne nenechat smeti)
if ( seznam1_zacatek = nil ) then begin // pokud je seznam prazdny chce to hodit prvni prvek na zacatek
seznam1_zacatek := novy;
end else begin // jinak najit posleni prvek a pridat na konec
temp := seznam1_zacatek;
while ( temp^.dalsi <> nil ) do temp := temp^.dalsi; (* dojede na posledni prvek *)
temp^.dalsi:= novy;
end;
end;
a k tomu: memu na konci pouzit to same jak mam pro vyhledavani na konec a akorat pridat jeste ten vypis (a blok)
Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
#13KIIV
děkuju za vysvětlení. Odevzdat však musím ten druhý příklad (tj. vytvořit dva seznamy, které spojím jako třetí seznam z). Ale nemám ponětí jak to zapsat v cyklech. Nefunguje mi to.
tak to co sem daval je priblizne pridavani do jednoho a s malou upravou i druheho
prekopirovani do tretiho je to trosku horsi ale taky se to da zvladnout --- jen se mi to nechce delat (a hlavne ne naslepo - delphi uz nemam k dispozici)
Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...