IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 4. diel - Viacrozmerné polia v C# .NET

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Patrik Valkovič:13.7.2015 16:26

Jen bych rád doplnil, že někdy se také využívá klasického jednorozměrného pole pro simulaci pole vícerozměrného. Často jsem se s tím setkal napříkald v C.
Idea je taková, že index dopočítáme. Vezneme příklad : mám krychli o hraně 5 prvků. Jednorozměrné pole bude mít 555=125 prvků.
Pokud budeme chtít získat prvek v hloubce 3 (z), 2 prvek zhora (y) a 4 prvek od levého kraje (x), můžeme se dopočítat následovně.

int IndexPrvku = (z-1) * Vyska(5) * Sirka(5) + (y-1) * Sirka(5) + x;

To platí za předpokladu, že indexujeme z levého horního rohu směrem do pravého dolního a teprve potom dozadu. Jedná se tedy o 59 prvek. To, že je prvek ve třetí vrstvě znamená, že před ním jsou ještě dvě vrstvy, které musíme dopočítat, proto se odečítá jednička.
Jedná se jen o zajímavost, se kterou se ale často v C setkávám :)

Odpovedať
13.7.2015 16:26
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Patrik Valkovič:13.7.2015 17:59

Omlouvám se, použil jsem hvězdičky místo krát a tak z toho mám místo násobení kurzívu. Má tam být samozřejmě "Jednorozměrné pole bude mít 5 krát 5 krát 5=125 prvků."
Už příspěvek nemůžu upravit

Odpovedať
13.7.2015 17:59
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Martin Turner:30.7.2015 10:20

Zdravím,
mohl bych požádat o radu, jak zjistit indexy daného prvku ve vícerozměrném poli?
Děkuji.

 
Odpovedať
30.7.2015 10:20
Avatar
Odpovedá na Martin Turner
Štefan Pružinský:31.7.2015 14:03

Ahoj,
riešenie tvojho problému je jednoduché. Predstav si takéto pole:

1   2   3   4   5
6   7   8   9   10
11  12  13  14  15
16  17  18  19  20
21  22  23  24  25
26  27  28  29  30
31  32  33  34  35

A chceme nájsť napr. index čísla 29:

int hladanyPrvok = 29;
for (int y = 0; y < pole.GetLength(1); y++)
{
    for (int x = 0; x < pole.GetLength(0); x++)
    {
        if (pole[x, y] == hladanyPrvok)
            Console.Write(x + "x" + y);
    }
}

Výpis je 3x5, čiže x = 3 a y = 5 (Pole začína od čísla nula. Ak chceme index ôs, ktoré začínajú od 1, k výsledku prirátame 1 tzn. 4x7). Algoritmus je nasledovný: Prejdeme všetky prvky poľa a pri každom prvku overujeme jeho zhodu z hľadaným prvkom. :)

Odpovedať
31.7.2015 14:03
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Martin Turner:31.7.2015 14:13

Děkuji,

dospěl jsem postupně ke stejnému výsledku. :-)

 
Odpovedať
31.7.2015 14:13
Avatar
Ondřej Krsička:13.5.2016 15:17

To zapisování sloupečků na řádek je strašně stupidní.

int[,] kinosal = new int[,] {
        { 0, 0, 0, 0, 1 },
        { 0, 0, 0, 1, 1 },
        { 0, 0, 1, 1, 1 },
        { 0, 0, 0, 1, 1 },
        { 0, 0, 0, 0, 1 }
};
 
Odpovedať
13.5.2016 15:17
Avatar
Václav Tobiška:7.7.2017 13:20

Ta orientace sloupce/řádky je pěkně šílená, ale několik vytvořených polí snad pomůže v zafixování...

 
Odpovedať
7.7.2017 13:20
Avatar
62624
Člen
Avatar
62624:26.7.2017 22:54

užitečné.

 
Odpovedať
26.7.2017 22:54
Avatar
Richard Jakubec:11.9.2017 8:41

Velmi zdařilý celý úvod do C#, tak teď jen procvičovat a zároveň pokročit k dalším částem programování

 
Odpovedať
11.9.2017 8:41
Avatar
ZdenekS
Člen
Avatar
ZdenekS:13.10.2017 16:51

kolegové poradí mi někdo

a/
a1/ List<int> MujList = new List<int>();
a2/ MujList.Add(1);

b/
b1/ jak udělám deklaraci ?
b2/ pokud chci udělat pole o třech prvcích MujList.Add(1,1,1) ???

děkuji

 
Odpovedať
13.10.2017 16:51
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!