Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 2.827 pregleda

Najnovija ↓

Problem sa List<> komandom 05.10.2011. u 15:02 · pre 183 meseca
izmenjeno 3 puta, poslednji put Shadowed 07.10.2011. u 08:58
  1. Shadowed07.10.2011. u 08:58zapis iz teksta poruke
  2. ZoranV07.10.2011. u 08:19zapis iz teksta poruke
  3. mmix05.10.2011. u 15:22zapis iz teksta poruke
#1
Upoznajem se sa komandom List<>, imam problem (ili ne shvatam)

kako da mi vrati vrednost indeksa određenog člana niza

Želim da se krećem kroz niz, tako što ću povećavati ili smanjivati vrednost indeksa.
Pokušao sam da to rešim sa rednim brojem zapisa,
ali tu moram početi od broja 1 da bi program radio kako treba
i sve je uredu dok ne obrišem neki zapis i poremetim kontinuitet.
A i nije dobro rešenje - ne mora sve počinjati od broja 1.


Code (csharp):
   
List<Vozac> LV = new List<Vozac>();
Vozac vozac; // klasa sa podacima
 // čita prvo trenutni RB
int a = Convert.ToInt16(txtRB.Text);
//učitava objekat sa manjim RB za 1
txtRB.Text = LV[a-1].RB;
txtPrezime.Text = LV[a-1].Prezime;
txtIme.Text = LV[a-1].Ime;
 


Mora da postoji komanda da pokaže trenutni index.

P.S. Kako da u [code] unesem opciju za C# kod ?
Re: Problem sa List<> komandom 06.10.2011. u 11:52 · pre 183 meseca #4
Vrlo često sam na ovom sajtu ali i on i drugi daju samo konkretne vrednosti indexa ,
ali ono što mi treba je da mi vrati vrednost index-a trenutno odabranog objekta.

U svakom slučaju hvala.
Re: Problem sa List<> komandom 06.10.2011. u 12:06 · pre 183 meseca #5
Citat:
ZoranV: Upoznajem se sa komandom List<>, imam problem (ili ne shvatam)

kako da mi vrati vrednost indeksa određenog člana niza

Želim da se krećem kroz niz, tako što ću povećavati ili smanjivati vrednost indeksa.
Pokušao sam da to rešim sa rednim brojem zapisa,
ali tu moram početi od broja 1 da bi program radio kako treba
i sve je uredu dok ne obrišem neki zapis i poremetim kontinuitet.
A i nije dobro rešenje - ne mora sve počinjati od broja 1.


Code (csharp):
   
List<Vozac> LV = new List<Vozac>();
Vozac vozac; // klasa sa podacima
 // čita prvo trenutni RB
int a = Convert.ToInt16(txtRB.Text);
//učitava objekat sa manjim RB za 1
txtRB.Text = listaVozaca[a-1].RB;
txtPrezime.Text = listaVozaca[a].Prezime;
txtIme.Text = listaVozaca[a].Ime;
 


Mora da postoji komanda da pokaže trenutni index.

P.S. Kako da u
Code:
 unesem opciju za C# kod ?


[sub][[b]Ovu poruku je menjao mmix dana 05.10.2011. u 15:22 GMT+1[/b]][/sub]


List<> NIJE komanda - LIST<> je vrsta STRUKTURE PODATAKA ... konkretno, List<> je dinamicka struktura podataka, ili tacnije: dinamicka lista ... ovo dinamicki znaci: da mozes dodadavati/brisati clanove iz te strukture podataka bezuslovno i bilo kada ... i sam si napisao da si primijetio da 'poremetis kontinuitet, kad obrises neki zapis'.

Ne znam sta podrazumijevas pod 'trenutnim indeksom' i sta zelis da uradis - ako ti nesto znaci u List<> postoje metodi: Find(), FindAll() i FindIndex(), od kojih ce ovaj poslednji da vrati cjelobrojni indeks clana, koji zadovoljava kriterijum pretrazivanja. 

List<> mozes pretrazivati, recimo, u 'for' petlji:

Code:

for (indeks=0;indeks<imeListe.Count;indeks++)
{
  imeListe[indeks] = nekiPodatak;
}


Ako zelis da dodas neki podatak u List<>, koristis metod: Add(), koji dodaje podatak na KRAJ liste. Ako zelis da izmijenis neki podatak ili da pronadjes podatak koji zadovoljava neki kriterijum pretrazivanja, koristi neki od metoda, koje sam gore nabrojao (Find(), ...).

Jedan, da ga nazovem, 'basic' clanak o List<>, sa jednostavnim primjerima, je ovdje: http://www.dotnetperls.com/list.
Potpis
Programming is fun, but writing good software is hard ...
Re: Problem sa List<> komandom 07.10.2011. u 08:18 · pre 183 meseca #6
Očigledno je da nisam dobro objasnio.

Želim da se krećem napred i nazad kroz List<> niz promenom vrednosti index-a.

Potrebna mi je povratna informacija na kom se trenutno index-u nalazim (kao što vidite ja sam to u primeru veoma loše rešio preko podatka RB koji se nalazi u TextBox-u trenutno "vidljivog" objekta)

Bez znanja tog podatka sigurno kretanje kroz index-e moguće je na dva načina:

1. počinjanjem od poslednjeg LV.Count, pa bi poslednji idex bio a=(LV.Count-1). Kretanje kroz List bi sada bilo a++ ili a--
2. Formranjem javne promeljive TrenutniIndex koji bi dobijala vrednost svake promene vrednosti index-a trenutno korišćenog objekta.

Verovatno je rešenje LV.FindIndex(problem je šta ovde postaviti) . Ovo bi trebalo da vrati int podatak index-a trenutno korišćenog objekta.
Znači onda bi prethodni objekat bio na LV[LV.FindIndex(???)-1].RB itd.

Re: Problem sa List<> komandom 07.10.2011. u 08:36 · pre 183 meseca #7
nikita ti je objasnio da List<T> nema positional tracking i ne pamti poziciju. Zato npr winforms ima BindingSource koji to radi za tebe u okviru forme. Jedina vrsta iteracije koju List podrzava je kroz deklarisani enumerator ali to ti je forward-only.

Dakle, moras ti da pratis index u svom kodu i da kroistis default indexer liste.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Problem sa List<> komandom 07.10.2011. u 09:02 · pre 183 meseca #8
Ako sam dobro shvatio to je varijanta verzije 2. prethodne poruke.

Hvala
Re: Problem sa List<> komandom 07.10.2011. u 10:48 · pre 183 meseca #9
Citat:
ZoranV: Vrlo često sam na ovom sajtu ali i on i drugi daju samo konkretne vrednosti indexa ,
ali ono što mi treba je da mi vrati vrednost index-a trenutno odabranog objekta.

U svakom slučaju hvala.


> ali ono što mi treba je da mi vrati vrednost index-a trenutno odabranog objekta

Ne znam sta konkretno radis i zasto ti treba 'vrednost index-a trenutno odabranog objekta', iz jedne DINAMICKE strukture podataka (kao sto je List<>).
Ali, ako ti NE treba sam 'indeks', nego ti treba vrijednost tekuceg CLANA iz liste, odnosno, sam clan na tekucoj poziciji, njega mozes dohvatiti sa:

nekaLista.GetEnumerator.Current.

Property 'Current' nije indeks tekuceg clana, nego bas tekuci clan.

Inace, u najboljoj namjeri, smatram da prije samog pocetka rada u bilo kom programskom jeziku, nije lose procitati o tome sta su STRUKTURE PODATAKA, a sta ALGORITAMSKO MODELOVANJE ...
Potpis
Programming is fun, but writing good software is hard ...
Re: Problem sa List<> komandom 07.10.2011. u 10:49 · pre 183 meseca #10
Samo mala ispravka, uz prethodni post.

Omaskom sam napisao:

nekaLista.GetEnumerator.Current,

a treba:

nekaLista.GetEnumerator().Current.

Pozdrav
Potpis
Programming is fun, but writing good software is hard ...
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme