Moth calc source kod

poruka: 21
|
čitano: 1.534
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
Moth calc source kod

zanima me koliko je ispravan ovaj kod, greške, što bi se moglo bolje rješiti itd

zamišljeno je da radi tako da svaki button ima svoje ime koje se mijenja, tako i labeli za navigaciju, a tako i slike

kako napraviti pravu instalaciju za winse baš i neznam, onaj tko zna će i vidjet što sve ima u tom zipu, generalno tražim savjete x)

moth calc možete preuzeti ovdje

 

 

ovo je dio koda klase koju pozivam iz dinamičke biblioteke

 

 

namespace iedk
{
    public class Class1
    {
       
        public static void klik(out string b1, out string b2, out string b3, out string b4, out string b5, out string b6, out string b7, out string l1, out string l2, out string l3, out string l4, string a, out Image slika)
        {

            if (a == "home")
            {
                b1 = "mehanika (23)";
                b2 = "titranje i valovi (4)";
                b3 = "toplina (7)";
                b4 = "elektricitet i magnetizam (18)";
                b5 = "optika (5)";
                b6 = "atomska i nuklearna fizika (6)";
            }

            else if (a == "elektromagnetska indukcija" || a == "elektromagnetska indukcija (3)")
            {
                b1 = "faradayev zakon indukcije";
                b2 = "induktivitet zavojnice";
                b3 = "jednadžba transformatora";
                l1 = "elektricitet i magnetizam";
                l2 = "magnetizam";
                l3 = "elektromagnetska indukcija";
            }

            else if (a == "impuls sile i količina gibanja")
            {
                l1 = "mehanika";
                l2 = "dinamika";
                l3 = "impuls sile i količina gibanja";
                slika = iedk.Resource1.impuls_sile_kolicina_gibanja;
            }

 

ovo je dio koda koji poziva dotičnu klasu iz dinamičke biblioteke

 

       public void btn1_Click(object sender, EventArgs e)
        {
            ime_tipke = btn1.Text;
            iedk.Class1.klik(out b1, out b2, out b3, out b4, out b5, out b6, out b7, out l1, out l2, out l3, out l4, ime_tipke, out  slika);
            tipke();
        }

I’m the juggernaut b*tch.
 
0 0 hvala 0
17 godina
moderator
offline
Re: Moth calc source kod

Ne znam što bih ti na ovo rekao. Mogao bih ponoviti on što je MrBlc napisao u drugoj temi: "To je dobar pokazatelj da ne razumiješ niti osnove OOP-a".

 

Mislim da si cijeli koncept pogrešno zamislio. Metoda klik ti je apsurdna. Zbog toga i u nju guraš toliko argumenata kad si sve pogrešno koncipirao. Ti bi trebao imati stablo dvostruko povezanih objekata. Nešto tipa:

 

[element]

naziv

listaPodElemenata

brojSvihPodElemenata(to bi trebao izračunati samo jednom, nakon što si učitao sve elemente)

parentElement

slika

 

 

 

I onda ako je listaPodElemenata prazna, onda prikazuješ sliku. Ako hoćeš natrag, imaš parentElement. A u listaPodElemenata imaš pokazivače/reference na druge elemente (gumbe) u toj kategoriji (ako je kategorija "mehanika", imat ćeš elemente "kinematika", "dinamika", "rad, energija i snaga", "mehanika fluida").

14 godina
neaktivan
offline
Re: Moth calc source kod

ok, ali shvati ti sad mene, ja imam sveukupno samo 7 tipaka, [element] koji mi tu navodiš je meni sama tipka, pravio sam prema objektno orjentiranom programiranju ali mi je sama tipka objekt sam za sebe, tako napravio cijeli koncept, išao sam po toj logici a ne još dodatno stvarati objekt koji će tražiti ime tipke pa prosljeđivati u klasu, pa klasa vraća u objekt, pa objekt daje ime tipci

 

hebiga očito mi mozak ne radi na klasičan način od zadnje ozljede glave, OOP sam preveo na meni shvatljiv princip, čini mi se da bi pravljenje objekata bilo samo dodatni posao a funkcionalnost ista

 

"Metoda klik ti je apsurdna." tu nisi u pravu, barem ne po mojoj logici, morao bih raditi preko 150 različitih elemenata, što sam opet po svojoj logici izbacio objekt i napravio objekt od same kontrole gui-a

 

hajd puno hvala jer si se potrudio shvatiti ovo kako sam napisao {#}

ali sad probaj kako sam napisao sa ovim objašnjenjem x)

i ne mislim ništa loše niti želim biti arogantan, neznam zašto ljudi imaju taj utisak od mene

 

edit: opet pročitah tvoj post, i rekao si ako mi je pod element prazan, onda mi prikaže sliku, ali ja imam jedno ogromno stablo sa 150 grana i prvi put sam napravio aplikaciju pisanjem pod-elemenata i to je bilo jedno 15 puta dulje vremenski za napisati nego na ovaj način...

 

edit drugi: ja i imam child / parent element ali očito nisi primjetio gdje sam ih utrpao i kako oni rade x)

 

edit treći: hebiga nemogu zapamtit 2 stvari u isto vrijeme, nemoj me krivit zbog toga, kad sam malo promislio, ovo i je napisano na uputstvo koje si mi dao, samo što sam ja to sve utrpao u jedan ogroman if else blok da nemoram pisati jako puno metoda i budalaština, samo sam izbacio objekt iz ovoga svega, ova metoda klik bi imala točno isti broj ovih.. varijabli il kak se zovu, i da sam ju napravio kako si mi opisao

 

btw jako često brkam metode i funkcije, nemoj mi zamjerit x)

I’m level D4 juggernaut. Get out of the way b*tch.
Poruka je uređivana zadnji put sri 25.5.2011 20:50 (munjovoz).
17 godina
moderator
offline
Re: Moth calc source kod
munjovoz kaže...

ok, ali shvati ti sad mene, ja imam sveukupno samo 7 tipaka

Zar je bitno je li samo jedna, dvije, 7 ili petsto? Također, zar uopće mora biti tipka? Može isto tako biti element u comboboxu ili listi. To je irelevantno.

 

munjovoz kaže...

[element] koji mi tu navodiš je meni sama tipka

Iz tvog koga se to ne može zaključiti.

 

munjovoz kaže...

pravio sam prema objektno orjentiranom programiranju

Bojim se da ti ne znaš što je objektno orijentirano programiranje. OOP ne znači nabacivanje gotovih kontrola na formu i onda korištenje njihovih evenata.

 

munjovoz kaže...

ali mi je sama tipka objekt sam za sebe, tako napravio cijeli koncept, išao sam po toj logici a ne još dodatno stvarati objekt koji će tražiti ime tipke pa prosljeđivati u klasu, pa klasa vraća u objekt, pa objekt daje ime tipci

Napravio si krivi koncept. Ne znam kako drugačije da ti to kažem. Tako kako si ti to napravio se jednostavno NE RADI.

 

munjovoz kaže...
"Metoda klik ti je apsurdna." tu nisi u pravu, barem ne po mojoj logici, morao bih raditi preko 150 različitih elemenata, što sam opet po svojoj logici izbacio objekt i napravio objekt od same kontrole gui-a

I ta "sama kontrola gui-a" ti sadržava popis podkontrola i naziv slike ako je zadnja u popisu? Ili si sve to nagurao u metodu klik?

17 godina
moderator
offline
Re: Moth calc source kod

Sad si još stvari dopisao... Jel ti zbilja imaš neko stablo objekata? Ajd da ga vidim. Ili si samo u metodi klik stvaraš "virtualno" stablo, virtualnu hijerahiju ili što. Metodi klik bi trebao proslijediti samo jedan element - objekt povezan s gumbom na koji se kliknulo. I onda preko tog objekta znaš koji je naziv kategorije i koji su njegovi podobjekti, odnosno koje sve gumbiće ćeš imati.

14 godina
neaktivan
offline
Re: Moth calc source kod

sve potrpah u metodu klik, ono što je trebalo biti na objekt sam direktno preskočio sa metodom i njegovim out, a skratio sam si pisanje sa jednim velikim else if blokom...

 

kažem opet, tražim savjet jer mi očito mozak ne radi kao tvoj, ali me ti probaj shvatit i zamislit kako bi oop izgledao da izbaciš taj objekt, i upravo tako sam ja i napravio

 

i ne kontam kako bi trebao napraviti aplikaciju koja ima izbornik sa total 150 grana i pod grana ne korištenjem eventa samog buttona?

I’m level D4 juggernaut. Get out of the way b*tch.
14 godina
neaktivan
offline
Re: Moth calc source kod

evo, to ti mogu pokazat, ako ti nije problem, instaliraj i pokreni moj moth calc, i kad ideš po izborniku, stvara ti se navigacija preko labela, i te labele su osnova preko koje aplikacija pamti svoje elemente

 

           else if (a == "jednoliko gibanje po pravcu")
            {
                l1 = "mehanika";
                l2 = "kinematika";
                l3 = "jednoliko gibanje po pravcu";
                slika = iedk.Resource1.jednoliko_gibanje_pravac;
            }

 

l1= label1, l2, label2, l3, label3, i preko njih sam napravio imaginarni child / parent odnos gdje aplikacija zna gdje je bila a gdje nije

 

ovo mi je metoda za natrag

 

        public void natrag()
        {
            if (label4.Text != string.Empty) ime_tipke = label3.Text;
            else if (label3.Text != string.Empty) ime_tipke = label2.Text;
            else if (label2.Text != string.Empty) ime_tipke = label1.Text;
            else if (label1.Text != string.Empty) ime_tipke = "home";
            else ime_tipke = "home";
        }

 

 

a taj jedan element koji trebam prosljediti funkciji il metodi, neznam, brkam imena je ime_tipke, koja je u klasi pod nazivom a

 

       private void btn3_Click(object sender, EventArgs e)
        {
            ime_tipke = btn3.Text;
            iedk.Class1.klik(out b1, out b2, out b3, out b4, out b5, out b6, out b7, out l1, out l2, out l3, out l4, ime_tipke, out  slika);
            tipke();
        }

 

i sada te pitam za savjet kada razumiješ kako sam napravio =D

 

edit: način na koji svaki button dobiva svoje ime piše u prvom postu, tj u njegovom kodu, ako baš hoćeš, možeš izvuć source kod iz ovog zipa što je priložen ili ti ja mogu negdje zaljepit

edit2: b1= button1, itd x) al sumnjam da sam morao napomenuti

I’m level D4 juggernaut. Get out of the way b*tch.
Poruka je uređivana zadnji put sri 25.5.2011 21:10 (munjovoz).
14 godina
neaktivan
offline
Re: Moth calc source kod

priznajem, ja nemogu ovo nazvati objekto orjentirano programiranje, ovo je profesionalcima sprd, ali meni je žalosno ako su već takvi profesionalci, zašto imaju tako velike probleme shvaćanja kako sam napisao aplikaciju i kako sam napravio imaginarni objekt i maltene sve imaginarno x)

 

može me bilo tko blatit ali nek prvo shvati kako sam ja to napravio i vidjet će da to po mojoj logici ima logike

 

edit: kolega mbaksa, ne ciljam na tebe direktno sa ovom izjavom =)

nego na one koje čitaju i misle joj vidi retardiranog imbecila

I’m level D4 juggernaut. Get out of the way b*tch.
Poruka je uređivana zadnji put sri 25.5.2011 21:03 (munjovoz).
17 godina
moderator
offline
Re: Moth calc source kod
munjovoz kaže...

priznajem, ja nemogu ovo nazvati objekto orjentirano programiranje, ovo je profesionalcima sprd, ali meni je žalosno ako su već takvi profesionalci, zašto imaju tako velike probleme shvaćanja kako sam napisao aplikaciju i kako sam napravio imaginarni objekt i maltene sve imaginarno x)

 

može me bilo tko blatit ali nek prvo shvati kako sam ja to napravio i vidjet će da to po mojoj logici ima logike

Tko kaže da ne shvaćaju? Shvaćaju da si koristio proceduralni pristup programiranju u čistom OOP jeziku. A to se ne radi.

 

Ne kužim zašto bi si netko trebao razbijati glavu s tvojom logikom - otprilike mi je jasno što si radio, no ne kužim zašto bih  trebao razumjeti sve do u detalj, kad je i više nego jasno da ti je logika pogrešna.

 

munjovoz kaže...
edit: kolega mbaksa, ne ciljam na tebe direktno sa ovom izjavom =)

nego na one koje čitaju i misle joj vidi retardiranog imbecila

Ne znam zašto bi itko to mislio.

 

 

Uglavnom, preporučam ti da kreneš ispočetka. I to na način na koji sam ti predložio. Možda bi zapravo bilo najbolje da prvo program napraviš bez GUI-ja, dakle u konzoli. Malo dublje zaroni u OOP i više nikad nemoj raditi na način na koji si sad ovo napravio - samo si radiš štetu (utvrđuješ pogrešne načine programiranja i ne učiš ispravne).

 

 

 

E, da - i još jedna napomena. Znači, svi ti "objekti" bi trebali biti u stablastoj strukturi. I ona bi trebala biti pretraživa - znači, moraš se moći kretati kroz nju. To ti je zapravo najveći apsurd u cijeloj priči - umjesto da imaš jednu petljicu da dođeš do podataka za željeni objekt, ti imaš gomilu if-ova. Nit ne moraš imati objekte ili ne znam što, nit ne mora nužno biti hijerarhijski posloženo - dovoljno bi bilo da imaš sve te podatke u polju struktura/klasa. Svi ti silni if-ovi u metodi klik govore da ti bježe osnove osnova programiranja (a ne samo osnove objektno orijentiranog programiranja).

 

Poruka je uređivana zadnji put sri 25.5.2011 21:51 (mbaksa).
14 godina
neaktivan
offline
Re: Moth calc source kod

ok, znači, ako bi ja radio po načinu koji si mi objasnio, trebao bih 100 komada [element] koji ima odnos child / parent i koji ima svojih 5+ pod elemenata

 

to sam i prvi put napravio, neće mi biti problem još jednom

 

a sada imam drugo pitanje, kako da potrpam svih tih 100 komada [element] u klasu u dinamični library i htio bih neku ideju kako bih ja njih pozivao na temelju 7 tipaka koje zapravo čine tih 100 komada [element] jer ne želim da mi je aplikacija monolitni exe

I’m level D4 juggernaut. Get out of the way b*tch.
14 godina
neaktivan
offline
Re: Moth calc source kod
mbaksa kaže...

 

E, da - i još jedna napomena. Znači, svi ti "objekti" bi trebali biti u stablastoj strukturi. I ona bi trebala biti pretraživa - znači, moraš se moći kretati kroz nju. To ti je zapravo najveći apsurd u cijeloj priči - umjesto da imaš jednu petljicu da dođeš do podataka za željeni objekt, ti imaš gomilu if-ova. Nit ne moraš imati objekte ili ne znam što, nit ne mora nužno biti hijerarhijski posloženo - dovoljno bi bilo da imaš sve te podatke u polju struktura/klasa. Svi ti silni if-ovi u metodi klik govore da ti bježe osnove osnova programiranja (a ne samo osnove objektno orijentiranog programiranja).

 

aha pa to je lagano, samo razlomim ovaj else if uvjet, trebat će mi sat vremena i to je to =D

možda ti se čini, ali meni se opet čini da mi ipak toliko i ne bježi programiranje kada to mogu popravit vrlo brzo i bezbolno

 

dobih svoj odgovor što mi nevalja, hvala mbaksa, car si =D

I’m level D4 juggernaut. Get out of the way b*tch.
17 godina
moderator
offline
Re: Moth calc source kod

Gle, ovako. Ni ne moraš raditi hijerarhijsku strukturu. Ako ništa drugo, možes si napraviti jedno polje objekata. I svako od tih polja ima svoj indeks, zar ne. Nulto polje ti je Home. U polju Home piše da su njezini podelementi oni s indeksima 1, 5, 17, 44, 64. 1 je mehanika. Itd.

 

I pazi sad foru. Uoči da ti svaka GUI kontrola ima svojstvo Tag. Kod gumbića svojstvo Tag ti može biti indeks pojedinog elementa u polju! I to je sve - kad učitaš Tag 0, sve ostalo ide automatski - pogledaš element 0 u polju i vidiš koje sve druge elemente on sadržava (to će ti biti gumbići) pa preko indeksa saznaš natpis koje ćeš staviti na gumbiće itd.

 

 

Ovo iznad ti je samo jedan mogući pristup. Osobno ne volim raditi takve stvari. Umjesto gumbića koristio bil listBox. Zašto? Zato jer u listBox možeš ubacivati elemente! Znači, ne trebaš se opterećivati s Tagovima. Jedino se onda postavlja pitanje kako riješiti one labele s hijerarhijskom strukturom, jer ih isto poput gumbića ne možeš povezati direktno, preko reference, nego moraš koristiti Tag. No tome možeš doskočiti tako da tu hijerarhijsku strukturu čuvaš u odvojenom polju pa ako se klikne na prvi label, zna se da treba učitati element koji je referenciran u hijerarhija[0], ako se klikne na drugi label hijerarhija[1] itd.

16 godina
odjavljen
offline
Re: Moth calc source kod
mbaksa kaže...

Nešto tipa:

 

[element]

naziv

listaPodElemenata

brojSvihPodElemenata(to bi trebao izračunati samo jednom, nakon što si učitao sve elemente)

parentElement

slika

Citiram ovaj post jer mislim da je ovo najjednostavnije rješenje. Imaš klasu Element koja zna svoj naziv, sve podelemente (lista), broj podelemenata (čak nije ni nužno), nadelement te podatke za prikazati ako je posljednji element (formule, tekst, slike i sl). Na taj način ne samo da imaš jednostavno šetanje po strukturi, već kompletnu strukturu možeš spremit u XML file i jednostavno učitati.

 

Za početak napravi neku jednostavniju strukturu (3 razine po 2-3 elementa), pokušaj napraviti mogućnost provjere da li je element krajnji, dohvat imena elementa, dohvat podelemenata i nadelementa. Možeš u konzoli, da ti ispiše elemente u stilu:

 

Nadelement: <ime nadelementa> (ako nije root)

1. podelement: <ime>

2. podelement: <ime>   + [end]

 

i da pritiskom na B ide na nadelement, a 1, 2, 3 na taj element po redu.

 

Obavezno postaj kod jer cilj nije da ti to radi, već da napraviš po OOP principima (ili bar pokušaš, pa da ti na jednostavnijem primjeru ukažemo gdje griješiš).

Big wheel keep on turning, Proud Mary keep on burning, Trolling, trolling, trolling on the river.
14 godina
neaktivan
offline
Re: Moth calc source kod
MrBlc kaže...
mbaksa kaže...

Nešto tipa:

 

[element]

naziv

listaPodElemenata

brojSvihPodElemenata(to bi trebao izračunati samo jednom, nakon što si učitao sve elemente)

parentElement

slika

Citiram ovaj post jer mislim da je ovo najjednostavnije rješenje. Imaš klasu Element koja zna svoj naziv, sve podelemente (lista), broj podelemenata (čak nije ni nužno), nadelement te podatke za prikazati ako je posljednji element (formule, tekst, slike i sl). Na taj način ne samo da imaš jednostavno šetanje po strukturi, već kompletnu strukturu možeš spremit u XML file i jednostavno učitati.

 

Za početak napravi neku jednostavniju strukturu (3 razine po 2-3 elementa), pokušaj napraviti mogućnost provjere da li je element krajnji, dohvat imena elementa, dohvat podelemenata i nadelementa. Možeš u konzoli, da ti ispiše elemente u stilu:

 

Nadelement: <ime nadelementa> (ako nije root)

1. podelement: <ime>

2. podelement: <ime>   + [end]

 

i da pritiskom na B ide na nadelement, a 1, 2, 3 na taj element po redu.

 

Obavezno postaj kod jer cilj nije da ti to radi, već da napraviš po OOP principima (ili bar pokušaš, pa da ti na jednostavnijem primjeru ukažemo gdje griješiš).

puno hvala za reply ali ovo nije najbolje rješenje u mom slučaju jer bi ja morao praviti 150 elemenata

a ja sam u svom slučaju preskočio pravljenje elemenata, pa sam napravio pravljenje "dinamičkih" elemenata, svaka tipka postaje svoj element kako joj se stvori ime i tek onda predaje svoje pod-elemente

 

sada bih vas pitao, kako da ne pravim 150 elemenata, da napravim nešto slično svom konceptu ali na ispravan način

I’m level D4 juggernaut. Get out of the way b*tch.
14 godina
neaktivan
offline
Re: Moth calc source kod
mbaksa kaže...

Gle, ovako. Ni ne moraš raditi hijerarhijsku strukturu. Ako ništa drugo, možes si napraviti jedno polje objekata. I svako od tih polja ima svoj indeks, zar ne. Nulto polje ti je Home. U polju Home piše da su njezini podelementi oni s indeksima 1, 5, 17, 44, 64. 1 je mehanika. Itd.

 

I pazi sad foru. Uoči da ti svaka GUI kontrola ima svojstvo Tag. Kod gumbića svojstvo Tag ti može biti indeks pojedinog elementa u polju! I to je sve - kad učitaš Tag 0, sve ostalo ide automatski - pogledaš element 0 u polju i vidiš koje sve druge elemente on sadržava (to će ti biti gumbići) pa preko indeksa saznaš natpis koje ćeš staviti na gumbiće itd.

 

 

Ovo iznad ti je samo jedan mogući pristup. Osobno ne volim raditi takve stvari. Umjesto gumbića koristio bil listBox. Zašto? Zato jer u listBox možeš ubacivati elemente! Znači, ne trebaš se opterećivati s Tagovima. Jedino se onda postavlja pitanje kako riješiti one labele s hijerarhijskom strukturom, jer ih isto poput gumbića ne možeš povezati direktno, preko reference, nego moraš koristiti Tag. No tome možeš doskočiti tako da tu hijerarhijsku strukturu čuvaš u odvojenom polju pa ako se klikne na prvi label, zna se da treba učitati element koji je referenciran u hijerarhija[0], ako se klikne na drugi label hijerarhija[1] itd.

da ali bi onda tag 0 morao imati 7 pod-tagova, svaki taj pod-tag još 5 tagova i svaki pod-tag pod-taga još 5 tagova, znači morao bih dodati još jednu kontrolu koja bi kontrolirala što je čiji child / parent u stablu

ideja je odlična ali ja u svom slučaju koristim samo 7 tipaka za kontrolu 150 elemenata

edit: i još bi morao pamtiti koji je tag u child a koji je u parent dijelu tako da se znam vratiti =)

 

a za ove tagove labele, nisam koristio polje ali radi na potpuno isti princip, imam l1, l2, l3 i l4, a za tipke je isto potpuno isti princip, b1, b2, b3 itd =)

i zapravo ja sam njih uspio povezati direktno, bez reference =D i bez da sam pravio odvojeno polje koje pamti =)

I’m level D4 juggernaut. Get out of the way b*tch.
Poruka je uređivana zadnji put sri 25.5.2011 23:01 (munjovoz).
17 godina
moderator
offline
Re: Moth calc source kod
munjovoz kaže...

da ali bi onda tag 0 morao imati 7 pod-tagova, svaki taj pod-tag još 5 tagova i svaki pod-tag pod-taga još 5 tagova,

Pokušavaj se pravilnije izražavati. Tag je cijeli broj (integer), stoga Tag ne može imati "pod-tagove". Ako govoriš o objektima u polju (eksplicitnije - arrayu, ako si me krivo skužio) - pa normalno, element mora na neki način znati koji se sve (pod)elementi nalaze unutar njega.

 

munjovoz kaže...

znači morao bih dodati još jednu kontrolu koja bi kontrolirala što je čiji child / parent u stablu

Je*ale te kontrole. {#} Zaboravi na trenutak malo na kontrole. Što da moraš isti program napisati u konzoli? Što je čiji child/parent u stablu pročitaš iz samih elemenata.

 

munjovoz kaže...
ideja je odlična ali ja u svom slučaju koristim samo 7 tipaka za kontrolu 150 elemenata

A problem je - gdje konkretno? Te tvoje tipke i cijelo sučelje u  jednom trenutku radi samo s jednim elementom i njegovim podelementima. Što je onda bitno jel ima 7 elemenata, 70 ili 70000? To ne čini apsolutno nikakvu razliku u tvom programu.

 

munjovoz kaže...
edit: i još bi morao pamtiti koji je tag u child a koji je u parent dijelu tako da se znam vratiti =)

Pamtiti moraš u jednom trenutku samo aktivni element - jer ti aktivni element mora sadržavati svog parenta i childove. Ne kužim koji je problem s tim. Ti si ionako to na umjetan način dosad simulirao sa svim onim if-ovima, što je nešto što se jednostavno ne radi i protivno je dobroj programerskoj praksi. Ti si s tim zapravo onemogućio dinamičnost programa. Program bi ti bio dinamičan da to polje elemenata učitavaš iz datoteke.

14 godina
neaktivan
offline
Re: Moth calc source kod
mbaksa kaže...

Pokušavaj se pravilnije izražavati. Tag je cijeli broj (integer), stoga Tag ne može imati "pod-tagove". Ako govoriš o objektima u polju (eksplicitnije - arrayu, ako si me krivo skužio) - pa normalno, element mora na neki način znati koji se sve (pod)elementi nalaze unutar njega.

Je*ale te kontrole. {#} Zaboravi na trenutak malo na kontrole. Što da moraš isti program napisati u konzoli? Što je čiji child/parent u stablu pročitaš iz samih elemenata.

 

A problem je - gdje konkretno? Te tvoje tipke i cijelo sučelje u  jednom trenutku radi samo s jednim elementom i njegovim podelementima. Što je onda bitno jel ima 7 elemenata, 70 ili 70000? To ne čini apsolutno nikakvu razliku u tvom programu.

 

Pamtiti moraš u jednom trenutku samo aktivni element - jer ti aktivni element mora sadržavati svog parenta i childove. Ne kužim koji je problem s tim. Ti si ionako to na umjetan način dosad simulirao sa svim onim if-ovima, što je nešto što se jednostavno ne radi i protivno je dobroj programerskoj praksi. Ti si s tim zapravo onemogućio dinamičnost programa. Program bi ti bio dinamičan da to polje elemenata učitavaš iz datoteke.

morat ćeš mi oprostiti, imam oštećenje mozga pa imam problema sa povezivanjem imena sa značenjem onoga što želim reći, no to često ne izgleda na ništa xD

za prvo, da to sam i mislio, to već i imam izvedeno samo na varijaciju arraya =)

 

ja opet idem na logiku da ja to nemoram pisati u ovom...erm... konzoli, mogu koristiti same elemente od what you see is what you get, ono što piše na tipci će stvoriti novi element koji će biti obrisan čim se podigne bilo koji drugi event, no to nije težak posao za procesor ili za rame, nego to je 5 imena tipaka o čem pričamo pa ova moja devijacija, tj preskakanje B i C u nizu od A do D, i što u ovom slučaju i radi =)

 

 

zapravo nemoram ni pamtiti trenutni aktivni element, trenutno aplikacija radi bez pamćenja bilo koje varijable ali imaš pravo, prepravit ću i napravit pošteno neka radi kak bog zapovjeda =D

 

I’m level D4 juggernaut. Get out of the way b*tch.
16 godina
odjavljen
offline
Re: Moth calc source kod
munjovoz kaže...

puno hvala za reply ali ovo nije najbolje rješenje u mom slučaju jer bi ja morao praviti 150 elemenata

a ja sam u svom slučaju preskočio pravljenje elemenata, pa sam napravio pravljenje "dinamičkih" elemenata, svaka tipka postaje svoj element kako joj se stvori ime i tek onda predaje svoje pod-elemente

 

sada bih vas pitao, kako da ne pravim 150 elemenata, da napravim nešto slično svom konceptu ali na ispravan način

 

Evo ti primjer (u C# je jer nisam odavno radio u C++ i trenutno imam samo Visual Studio Express C# instaliran)

 

Klasa Element koji joj je element parent, koji su joj elementi child, kako se zove, a ako je posljednji čvor onda ima i text (to može biti bilo koji objekt koji sadrži potrebne informacije za prikaz):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace Tree
{
    class Element
    {
      private String name;
      private ArrayList children;
      private Element parent;
      private String text;
       
      public Element(String name, Element parent, String text)
      {
          this.name = name;
          this.parent = parent;
          this.text = text;
          children = new ArrayList();
      }

      public void AddChild(String name, String text)
      {
          children.Add(new Element(name, this, text));
      }

      public String GetName()
      {
          return name;
      }
   
      public String GetText()
      {
          return text;
      }
 
      public ArrayList GetChildren()
      {
          return children;
      }

      public Element GetParent()
      {
          return parent;
      }
    }
}

Big wheel keep on turning, Proud Mary keep on burning, Trolling, trolling, trolling on the river.
16 godina
odjavljen
offline
Moth calc source kod

Logika popunjavanja stabla je sljedeća (idem prvo u dubinu, možeš i prvo u širinu, ali je teže pratiti):

Element root, current;

  root = new Element("root", null, null); //kreiramo root element
  current = root; //current nam služi za kretanje po stablu

//Dodavanje elemenata u stablo (ovo se može dosta jednostavno riješit parsiranjem XML-a)
current.AddChild("mehanika", null);
current = (Element)current.GetChildren()[0]; //ušli smo u mehaniku
current.AddChild("kinematika", null);
current = (Element)current.GetChildren()[0]; //ušli smo u kinematiku
current.AddChild("po pravcu", "Jednadžba blablabla...");
current.AddChild("kružno", "Gibanje po kružnici blablabla...");
current = current.GetParent(); //vratili se u mehaniku
current.AddChild("dinamika", null);
current = (Element)current.GetChildren()[1]; // ušli u dinamiku
current.AddChild("trenje", "Sila trenja blablabla...");
current.AddChild("centrifuga", "Centrifugalna sila blablabla...");
current = current.GetParent(); //vratili se u mehaniku
current = current.GetParent(); //vratili se u root
current.AddChild("toplina", null);
current = (Element)current.GetChildren()[1]; //ušli smo u toplinu
current.AddChild("količina tvari", null);
current = (Element)current.GetChildren()[0]; //ušli smo u količinu tvari
current.AddChild("molarna masa", "Molarna masa je blablabla...");
current.AddChild("molarni volumen", "Molarni volumen je blablabla...");
current = current.GetParent(); //vratili se u toplinu
current.AddChild("toplinsko rastezanje", "Čvsta tijela se zagrijavanjem ...");

 

 

U formi imaš Element root i Element current, te metodu ShowElement(Element el). U metodi ShowElement:

  • postavljaš current = el
  • ispituješ da li je root i ako je disableaš natrag i početak, a ako nije enableaš ih
  • uklanjaš sve komponente iz donjeg dijela prozora (tekst i formule ili gumbe)
  • ispituješ da li je krajnji čvor (children je empty)
  •       ako je krajnji,   prikazuješ formule i tekst
  •       ako nije onda za svaki Element u children-u kreiraš gumb kojem će label biti Element.GetName(), a pozivati će funkciju  ShowElement((Element)current.GetChildren()[i]), gdje je i index trenutnog elementa

 

Početak ti poziva ShowElement(root), a natrag ShowElement(current.GetParent()). Za dodati broj unosa u kategoriji, možeš ručno, a možeš i programski pretražiti podstablo. Za pretagu ti treba pretraživanje stabla, a možeš pretraživati i podstablo ako želiš pretražit samo trenutnu kategoriju. Za navigaciju s labelima, najbolje ih je dodavat u listu i micat, a kad se klikne na neki label da nađe točno taj u listi i ukloni sve iza njega.

Big wheel keep on turning, Proud Mary keep on burning, Trolling, trolling, trolling on the river.
Poruka je uređivana zadnji put pet 27.5.2011 18:59 (MrBlc).
 
1 0 hvala 1
16 godina
neaktivan
offline
Re: Moth calc source kod

@ MrBlc

 

Kad si se vec potrudia napisat zasto nisi koristia propertise cisto da manje mista zauzima

 

 

   class Element

   {

     public string Name { get; private set; }

     public string Description { get; private set; }

     public Element Parent { get; private set; }

 

 

     private List<Element> children = new List<Element>();

     public List<Element> Children { get { return children; } }

 

     private Element() {}

     public Element(string name, Element parent, string text)

     {

       Name = name;

       Parent = parent;

       Description = text;

     }

 

     public void AddChild(string name, string text)

     {

       children.Add(new Element(name, this, text));

     }

   }

 

 

 

Poruka je uređivana zadnji put pet 27.5.2011 20:28 (Orinem).
14 godina
neaktivan
offline
Re: Moth calc source kod

momci zahvaljujem se =D

I’m level D4 juggernaut. Get out of the way b*tch.
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice