ITnetwork Flashka zdarma C# týden
Akce! Pouze tento týden sleva až 80 % na kurzy C# .NET. Lze kombinovat s akcí 50 % bodů navíc na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Milan
Člen
Avatar
Milan:1.10.2018 8:28

Ahoj, prosím o pomoc s vytvoření polí v cyklu. Potřebuji vygenerovat třeba 10 souřadnic b[x,y]. A potřebuji aby se každá jmenovala jinak b1, b2, b3 ...... A nevím jak udělat proměnné jméno toho pole.

Zkusil jsem: Vytvořit proměnné jméno pole, aby se při každém průchodu smyčkou vytvořilo nové a původní nepřepsalo. Bohužel neúspěšně.

Chci docílit: Vytvořit x polí s různým jménem a vše uložit pro pozdější použití.

 
Odpovědět 1.10.2018 8:28
Avatar
Odpovídá na Milan
Erik Šťastný:1.10.2018 8:39

Zmíněná pole musíš deklarovat před začátkem cyklu a uvnitř je pouze plnit.

 
Nahoru Odpovědět 1.10.2018 8:39
Avatar
Milan
Člen
Avatar
Milan:1.10.2018 8:41

Jasně, ale když nevím kolik polí bude, tak nevím kolik jich mám deklarovat. A udělat ručně třeba 1000 polí do foroty a pak postupně plnit? To se mi nezdá úplně dobré řešení. :-)

 
Nahoru Odpovědět  +1 1.10.2018 8:41
Avatar
Odpovídá na Milan
Erik Šťastný:1.10.2018 8:43

V tom případě si udělej List polí :) a přidávej do něj podle potřeby.

 
Nahoru Odpovědět  +3 1.10.2018 8:43
Avatar
Odpovídá na Milan
Erik Šťastný:1.10.2018 9:21

Teďka jsem si uvědomil, že jsi trval na nějakém názvu, pokud ti List nevyhovuje, tak můžeš používat Dictionary<string, pole>, kde ve stringu si můžeš "proměnnou" pojmenovat.

Editováno 1.10.2018 9:22
 
Nahoru Odpovědět  +1 1.10.2018 9:21
Avatar
Jan Procházka:1.10.2018 16:56

Taková blbá otázka: Opravdu musíš používat N proměnných b1, b2,... , bN? Nemůžeš použít pole polí, nebo 2D pole, kde by b5 bylo zastoupený buď jako b[5] nebo jako pátý řádek?

Důleřitý je vědět, kdy se určí to N, jestli na začátku a pak se plní souřadnice a používají, nebo se N v průběhu mění. Pokud je pravda to první, dá se snadno použít vícerozměrné pole. Pokud se N mění, je výhodnější použít list.

Programově deklarovat proměnné je většinou cesta do pekel - snadno se tam vytvoří nějaký bug a dohledat zpětně kde je počátek problémů je práce zralá Chocholouška...

 
Nahoru Odpovědět  +2 1.10.2018 16:56
Avatar
Jirka
Člen
Avatar
Odpovídá na Milan
Jirka:1.10.2018 17:57

Můžeš vyzkoušet něco jako tohle:

List listPoli<Pole> = new ArrayList<>();
for(int i = 0; i < max; i ++) {
// zde pridavas pole do listu
}
Nahoru Odpovědět  +1 1.10.2018 17:57
Kdo nic nedělá, nic nezkazí.
Avatar
HONZ4
Člen
Avatar
Odpovídá na Milan
HONZ4:3.10.2018 19:30

Chceš docílit nesmyslu. Program přece nepotřebuje mít pole pojmenované.
Pokud potřebuješ mít víc polí, a předem neznáš jejich počet použij nějaký seznam (jak už bylo řečeno) např. List. Přemýšlet nad automatickým pojmenováním polí je znakem špatné koncepce kódu.

Případně popiš co přesně řešíš, pak ti určitě někdo poradí jak na to.

 
Nahoru Odpovědět 3.10.2018 19:30
Avatar
Krystof Matejka:3.10.2018 21:38

Nebo můžeš vytvořit trojrozměrné pole

int pocetPoli = 10; //zvolis pocet napr. pres readline
int[ , , ] pole = new int[ pocetPloi, x, y] ();
While(true) //nebo nejaky jiny cyklus
{
//tady to naplnis
}
Editováno 3.10.2018 21:39
 
Nahoru Odpovědět  +1 3.10.2018 21:38
Avatar
Mirek Slouka
Člen
Avatar
Odpovídá na Milan
Mirek Slouka:3.10.2018 22:03

Nebo když už to chceš mít pojmenované, vytvoř si třídu, ve které budeš mít název, x, y. Když to použiješ v kombinaci s Listem, můžeš potom vyhledávat podle libovolného atributu třídy :). V podstatě si jen vytvoříš schránu pro data, pokud ti nejde o rychlost, tak by to mohlo stačit.

Nahoru Odpovědět 3.10.2018 22:03
I can explain it to you, but I can't understand it for you.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.