NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 4 - Vícerozměrná pole v C# .NET

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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 :)

Odpovědět
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

Odpovědět
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.

 
Odpovědět
30.7.2015 10:20
Avatar
Odpovídá 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. :)

Odpovědět
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. :-)

 
Odpovědět
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 }
};
 
Odpovědět
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í...

 
Odpovědět
7.7.2017 13:20
Avatar
62624
Člen
Avatar
62624:26.7.2017 22:54

užitečné.

 
Odpovědět
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í

 
Odpovědět
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

 
Odpovědět
13.10.2017 16:51
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 34.