NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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 9 - 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
Jana
Člen
Avatar
Jana:22.4.2019 16:16

k úvodní ukázce v článku jak naplnit pole - když napíšu:

int[] pole = new int[10];
pole[0] = 1;
for (int i = 0; i < 10; i++)
    pole[i] = i + 1;

tak dám nejdřív na pozici 0 jedničku a pak ji cyklem for přepíšu (shodou okolností opět na jedničku), je to tak?
Řádek
pole[0] = 1;
je tam tedy zbytečný, doporučila bych ho odstranit - jako začátečník jsem musela chvíli přemýšlet a zkoušet co tento řádek dělá než jsem přišla na to nic ;-)

 
Odpovědět
22.4.2019 16:16
Avatar
Jana
Člen
Avatar
Odpovídá na
Jana:2.5.2019 12:01

a takhle jednoduše by to nešlo?

string[] sever = { "USA", "Kanada", "Mexiko" };
            string[] jih = { "Brazílie", "Argentina", "Chile", "Peru" };
            string[] amerika = new string[1];
            amerika = sever.Union(jih).ToArray();
            foreach (string stat in amerika)
                Console.Write("{0} ", stat);
            Console.WriteLine();
            Console.WriteLine(amerika.Length);
            Console.ReadKey();

není mi ale jasný jak je to s tou velikostí pole:

můžeme pole založit s velikostí, kterou dynamicky zadáme až za běhu programu, ale velikost existujícího pole modifikovat nemůžeme.

Zkoušela jsem založit nové pole amerika s délkou sever.Length, pak (sever.Length + jih.Length), a nakonec s délkou 1 - zdá se že výsledek je vždy stejný, neznamená to že se délka pole mění?

 
Odpovědět
2.5.2019 12:01
Avatar
Odpovídá na Jana
Neaktivní uživatel:2.5.2019 20:13

Sice se úplně nevyznám ve tvém dotazu, ale:

  1. Co jestli by nešlo takhle jednoduše?
  2. Do ameriky dáš nové pole s určitou délkou. Potom do ní dáš jiné pole, které vznikne sjednocením severu a jihu. Délka pole se tedy nemění. Mění se celé pole.
Odpovědět
2.5.2019 20:13
Neaktivní uživatelský účet
Avatar
Odpovídá na Jana
Lucie Dolinay:3.5.2019 1:13

Ahoj,

Jak to vidím já:-)

Myslím, že touto částí věty "můžeme pole založit s velikostí, kterou dynamicky zadáme až za běhu programu" autor myslel tuto část kódu
int pocet = int.Parse(Con­sole.ReadLine()); //po spuštění programu uživatel zadá velikost pole např. 5
int[] cisla = new int[pocet]; //tedy dynamické nastavení protože uživatel zadává až po spuštění programu; v terminologii, která je použita ve článku by to pak staticky vypadalo, tak, že již před spuštěním by programátor napsal int[] cisla = new int[5]; (uživatel velikost daného pole neovlivní)

Druhá část věty "ale velikost existujícího pole modifikovat nemůžeme"
Zde k vysvětlení použiji tvou část kódu:
string[] jih = { "Brazílie", "Argentina", "Chile", "Peru" }; // toto je existující pole a je to totéž jako by jsi napsala string[] sever = new string[4];
Velikost pole je 4. A když je to tak, tak už nemůžeš napsat sever[4] = "Bolívie" (pozn. indexace od 0).
Po startu programu je prostě vytvořené pole o velikosti 4 a tu nezměníš. V kódu si sice můžeš dovolit napsat např.
string[] jih = { "Brazílie", "Argentina", "Chile", "Peru" };
jih = new string[5];
ale to pak naplnění pole jednotlivými státy ztrácí smysl neboť po následujícím řádku budeš mít změněnou velikost, ale všechno bude null.

Dále tento řádek je zbytečný. Funkce Union vytváří nové pole, ve kterém budou požadované změny a to také vrací, takže bych použila klíčové slovo var (výběr datového typu zajistí kompiler).
Stačí napsat: var amerika = sever.Union(jih)­.ToArray();

A na závěr jen taková vychytávka. Pro odřádkování nemusíš použít Console.Write­Line(). Stačí k tvému výpisu velikosti napsat "\n". To se v konzolových aplikacích o odřádkování postará.
Console.Write­Line("\n" + amerika.Length);

To už máme -2 řádky a to se počítá:-)
Pokud jsem správně pochopila tvůj dotaz, tak jsem snad trošku pomohla;-)

string[] sever = { "USA", "Kanada", "Mexiko" };
string[] jih = { "Brazílie", "Argentina", "Chile", "Peru" };
var amerika = sever.Union(jih)­.ToArray();
foreach (string stat in amerika)
Console.Write("{0} ", stat);
Console.Write­Line("\n" + amerika.Length);
Console.ReadKey();

 
Odpovědět
3.5.2019 1:13
Avatar
Martin Patočka:6.8.2019 11:03

Ahoj, prosím vás o radu, potřebuji do mého programu udělat pole instancí jednoho objektu a pak ty objekty z pole vytahovat jeden po druhém, nevíte jak toho nejlépe docílit? Každá isntance má vlastní jméno a staminu.
Díky moc!

 
Odpovědět
6.8.2019 11:03
Avatar
Odpovídá na Martin Patočka
Martin Havelka:6.8.2019 13:11

Tak to ukládej v generickém listu. Přečti si c# sekci kolekce...tam je o tom tuna informací.

List<trida> nazevListu = new List<trida>();

nazevListu.Add(instanceTridy);
 
Odpovědět
6.8.2019 13:11
Avatar
 
Odpovědět
6.8.2019 17:14
Avatar
Zdeněk Srnský:3.9.2019 15:50

Ahoj , Velice se mi líbí tyto stránky, ale ať se snažím jak chci nejsem schopen se nic naučit z česky psaného textu. Potom se mi motá 2x tolik výrazů které k sobě neumím přiřadit. Vím co je Array a jak s ním pracovat, ale jak někdo řekne pole tak jsem úplně vedle.

 
Odpovědět
3.9.2019 15:50
Avatar
Jiří Dvořák:19.9.2019 0:32

Zdravím,
zkouším si dělat pole a napadlo mě... když mám pole o 5ti hodnotách které zadá uživatel:

int[] pole = new int [5];
            Console.WriteLine("1.č");
            pole[0] = int.Parse(Console.ReadLine());
            Console.WriteLine("2.č");
            pole[1] = int.Parse(Console.ReadLine());
            Console.WriteLine("3.č");
            pole[2] = int.Parse(Console.ReadLine());
            Console.WriteLine("4.č");
            pole[3] = int.Parse(Console.ReadLine());
            Console.WriteLine("5.č");
            pole[4] = int.Parse(Console.ReadLine());

            Console.ReadKey();

jak vypíši např. třeba jen 2. a 4. hodnotu... kupříkladu...

poradí někdo? :)

Díky za odpovědi! :)

 
Odpovědět
19.9.2019 0:32
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 231.