Java týden Předvánoční slevová akce
Využij předvánočních slev a získej od nás 20 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

Lekce 8 - Pole v C#

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci kurzu, Ošetření uživatelských vstupů, jsme si ukázali ošetření uživatelských vstupů. Dnes si v C# tutoriálu představíme datovou strukturu pole a vyzkoušíme si, co všechno umí.

Pole

Představte si, že si chcete uložit nějaké údaje o více prvcích. Např. chcete v paměti uchovávat 10 čísel, políčka šachovnice nebo jména 50ti uživatelů. Asi vám dojde, že v programování bude nějaká lepší cesta, než začít bušit proměnné uzivatel1, uzivatel2... až uzivatel50. Nehledě na to, že jich může být třeba 1000. A jak by se v tom potom hledalo? Brrr, takle ne :)

Pokud potřebujeme uchovávat větší množství proměnných stejného typu, tento problém nám řeší pole. Můžeme si ho představit jako řadu přihrádek, kde v každé máme uložený jeden prvek. Přihrádky jsou očíslované tzv. indexy, první má index 0.

Struktura pole

(Na obrázku je vidět pole osmi čísel)

Programovací jazyky se velmi liší v tom, jak s polem pracují. V některých jazycích (zejména starších, kompilovaných) nebylo možné za běhu programu vytvořit pole s dynamickou velikostí (např. mu dát velikost dle nějaké proměnné). Pole se muselo deklarovat s konstantní velikostí přímo ve zdrojovém kódu. Toto se obcházelo tzv. pointery a vlastními datovými strukturami, což často vedlo k chybám při manuální správě paměti a nestabilitě programu (např. v C++). Naopak některé interpretované jazyky umožňují nejen deklarovat pole s libovolnou velikostí, ale dokonce tuto velikost na již existujícím poli měnit (např. PHP). My víme, že C# je virtuální stroj, tedy cosi mezi kompilerem a interpretem. Proto 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. Lze to samozřejmě obejít nebo použít jiné datové struktury, ale k tomu se dostaneme.

Možná vás napadá, proč se tu zabýváme s polem, když má evidentně mnoho omezení a existují lepší datové struktury. Odpověď je prostá: pole je totiž jednoduché. Nemyslím pro nás na pochopení (to také), ale zejména pro C#. Rychle se s ním pracuje, protože prvky jsou v paměti jednoduše uloženy za sebou, zabírají všechny stejně místa a rychle se k nim přistupuje. Mnoho vnitřních funkčností v .NET proto nějak pracuje s polem nebo pole vrací. Je to klíčová struktura.

Pro hromadnou manipulaci s prvky pole se používají cykly.

Pole deklarujeme pomocí hranatých závorek:

int[] pole;

Výraz pole je samozřejmě název naší proměnné. Nyní jsme však pouze deklarovali, že v proměnné bude pole intů. Nyní ho musíme založit, abychom ho mohli používat. Použijeme k tomu klíčové slovo new, které na naší úrovni znalostí nejsme zatím schopní podrobně vysvětlit. Spokojme se s tím, že je to kvůli tomu, že je pole referenční datový typ (můžeme chápat jako složitější typ):

int[] pole = new int[10];

Nyní máme v proměnné pole pole o velikosti deseti intů.

K prvkům pole potom přistupujeme přes hranatou závorku, pojďme na první index (tedy index 0) uložit číslo 1.

int[] pole = new int[10];
pole[0] = 1;

Plnit pole takhle ručně by bylo příliš pracné, použijeme cyklus a naplníme si pole čísly od 1 do 10. K naplnění použijeme for cyklus:

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

Abychom pole vypsali, můžeme za předchozí kód připsat:

for (int i = 0; i < pole.Length; i++)
    Console.Write("{0} ", pole[i]);
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Všimněte si, že pole má vlastnost Length, kde je uložena jeho délka, tedy počet prvků.

Konzolová aplikace
1 2 3 4 5 6 7 8 9 10

Můžeme použít zjednodušenou verzi cyklu pro práci s kolekcemi, známou jako foreach. Ten projede všechny prvky v poli a jeho délku si zjistí sám. Jeho syntaxe je následující:

foreach (datovytyp promenna in kolekce)
{
    // příkazy
}

Cyklus projede prvky v kolekci (to je obecný název pro struktury, které obsahují více prvků, u nás to bude pole) postupně od prvního do posledního. Prvek máme v každé iteraci cyklu uložený v dané proměnné.

Přepišme tedy náš dosavadní program pro foreach. Cyklus foreach nemá řídící proměnnou, není tedy vhodný pro vytvoření našeho pole a použijeme ho jen pro výpis.

int[] pole = new int[10];
pole[0] = 1;
for (int i = 0; i < 10; i++)
    pole[i] = i + 1;
foreach (int i in pole)
    Console.Write("{0} ", i);
Console.ReadKey();

Výstup programu:

Konzolová aplikace
1 2 3 4 5 6 7 8 9 10

Pole samozřejmě můžeme naplnit ručně a to i bez toho, abychom dosazovali postupně do každého indexu. Použijeme k tomu složených závorek a prvky oddělujeme čárkou:

string[] simpsonovi = {"Homer", "Marge", "Bart", "Lisa", "Maggie"};

Pole často slouží k ukládání mezivýsledků, které se potom dále v programu používají. Když potřebujeme nějaký výsledek 10x, tak to nebudeme 10x počítat, ale spočítáme to jednou a uložíme do pole, odtud poté výsledek jen načteme.

Metody na třídě Array

.NET nám poskytuje třídu Array, která obsahuje pomocné metody pro práci s poli. Pojďme se na ně podívat:

Sort()

Jak již název napovídá, metoda nám pole seřadí. Její jediný parametr je pole, které chceme seřadit. Je dokonce tak chytrá, že pracuje podle toho, co máme v poli uložené. Stringy třídí podle abecedy, čísla podle velikosti. Zkusme si setřídit a vypsat naši rodinku Simpsnů:

string[] simpsonovi = {"Homer", "Marge", "Bart", "Lisa", "Maggie"};
Array.Sort(simpsonovi);
foreach (string s in simpsonovi)
    Console.Write("{0} ", s);
Console.ReadKey();

Konzolová aplikace
Bart Homer Lisa Maggie Marge

Zkuste si udělat pole čísel a vyzkoušejte si, že to opravdu funguje i pro ně.

Reverse()

Reverse() nám pole otočí (první prvek bude jako poslední atd.), toho můžeme využít např. pro třídění pozpátku:

string[] simpsonovi = {"Homer", "Marge", "Bart", "Lisa", "Maggie"};
Array.Sort(simpsonovi);
Array.Reverse(simpsonovi);
foreach (string s in simpsonovi)
    Console.Write("{0} ", s);
Console.ReadKey();

IndexOf() a LastIndexOf()

Tyto metody vrátí index prvního nebo posledního nalezeného prvku. V případě nenalezení prvku vrátí -1. Každá z metod bere dva parametry, prvním je pole, druhým hledaný prvek. Umožníme uživateli zadat jméno Simpsna a řekneme mu, na jaké pozici je uložený. Teď to pro nás nemá hlubší význam, protože prvek pole je jen string. Bude se nám to však velmi hodit ve chvíli, kdy v poli budeme mít uloženy plnohodnotné objekty. Berme to tedy jako takovou přípravu.

string[] simpsonovi = {"Homer", "Marge", "Bart", "Lisa", "Maggie"};
Console.WriteLine("Ahoj, zadej svého oblíbeného Simpsna (z rodiny Simpsnů): ");
string simpson = Console.ReadLine();
int pozice = Array.IndexOf(simpsonovi, simpson);
if (pozice >= 0)
    Console.WriteLine("Jo, to je můj {0}. nejoblíbenější Simpson!", pozice + 1);
else
    Console.WriteLine("Hele, tohle není Simpson!");
Console.ReadKey();

Konzolová aplikace
Ahoj, zadej svého oblíbeného Simpsna (z rodiny Simpsnů):
Homer
Jo, to je můj 1. nejoblíbenější Simpson!

Copy()

Copy() již podle názvu zkopíruje část pole do jiného pole. Prvním parametrem je zdrojové pole, druhým cílové a třetím počet prvků, který se má zkopírovat.

Metody na poli

Třída Array není jedinou možností, jak s polem manipulovat. Přímo na samotné instanci pole (konkrétní proměnné) můžeme volat také spoustu metod. I když si zmíníme jen některé, je jich opravdu hodně. Nebudeme tedy dělat příklady, jen si je popíšeme:

Length

Length jsme si již zmínili, vrátí délku pole. Není metodou, ale vlastností, nepíší se za ni tedy závorky ().

Min(), Max(), Average(), Sum()

Matematické metody, vracející nejmenší prvek (Min()), největší prvek (Max()), průměr ze všech prvků (Average()) a součet všech prvků (Sum()). Metody nemají žádné parametry.

Concat(), Intersect(), Union()

Všechny tyto metody vrátí na výstupu nové pole a jako parametr mají druhé pole. Concat() vykoná nám již známou konkatenaci, tedy k našemu poli připojí druhé pole a takto vzniklé nové pole vrátí. Intersect() vykoná průnik obou polí, tedy sestaví pole s prvky, které jsou oběma polím společné. Union() naopak vykoná sjednocení, funguje tedy podobně jako Concat(), jen prvky, které byly v obou polích, jsou v novém poli jen jednou.

First() a Last()

Již podle názvu metody vrátí první a poslední prvek, neberou žádné parametry.

Take() a Skip()

Obě tyto metody berou jako parametr počet prvků. Take() vrátí pole s daným počtem prvků zkopírovaných od začátku původního pole. Skip() naopak vrátí pole bez těchto prvních prvků.

Contains()

Metoda vrací true/false podle toho, zda se prvek, uvedený v parametru metody, v daném poli nachází.

Reverse()

Metodu Reverse() známe již z třídy Array, pokud ji ale voláme na konkrétním poli, tak se prvky v něm neotočí, nýbrž je vytvořeno nové otočené pole a to je vráceno. Metoda nemá žádné parametry.

Distinct()

Distinct() je metoda bez parametrů a zajistí, aby byl v poli každý prvek jen jednou, tedy vymaže duplicitní prvky a unikátní pole vrátí jako návratovou hodnotu metody, opět tedy nemodifikuje dané pole.

Mnoho metod nemění přímo naše pole, ale vrátí pouze pole nové (jsou to metody Concat(), Intersect(), Union(), Reverse() a Distinct()), ve kterém jsou provedeny požadované změny. Pokud chceme modifikovat původní pole, musíme do něj dosadit. Tyto metody bohužel z důvodů, které pochopíme až později, nevrací přímo pole, ale typ IEnumerable. Aby bylo dosazení výsledku zpět do pole možné, musíme ho ještě převést na pole metodou ToArray().

int[] cisla = { 1, 2, 3, 3, 3, 5 };
cisla = cisla.Distinct().ToArray();

Proměnná délka pole

Říkali jsme si, že délku pole můžeme definovat i za běhu programu, pojďme si to zkusit a rovnou si vyzkoušejme nějakou metodu na poli:

Console.WriteLine("Ahoj, spočítám ti průměr známek. Kolik známek zadáš?");
int pocet = int.Parse(Console.ReadLine());
int[] cisla = new int[pocet];
for (int i = 0; i < pocet; i++)
{
    Console.Write("Zadejte {0}. číslo: ", i + 1);
    cisla[i] = int.Parse(Console.ReadLine());
}
Console.WriteLine("Průměr tvých známek je: {0}", cisla.Average());
Console.ReadKey();

Konzolová aplikace
Ahoj, spočítám ti průměr známek. Kolik známek zadáš?
5
Zadejte 1. číslo: 1
Zadejte 2. číslo: 2
Zadejte 3. číslo: 2
Zadejte 4. číslo: 3
Zadejte 5. číslo: 5
Průměr tvých známek je: 2,6

Tento příklad by šel samozřejmě napsat i bez použití pole, ale co kdybychom chtěli spočítat např. medián? Nebo např. vypsat zadaná čísla pozpátku? To už by bez pole nešlo. Takhle máme k dispozici v poli původní hodnoty a můžeme s nimi neomezeně a jednoduše pracovat.

To by pro dnešek stačilo, můžete si s polem hrát. V příští lekci, Textové řetězce v C# podruhé - práce s jednotlivými znaky, na vás čeká překvapení ;-)


 

Stáhnout

Staženo 1108x (141.34 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
57 hlasů
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Předchozí článek
Ošetření uživatelských vstupů
Všechny články v sekci
Základní konstrukce jazyka C#
Miniatura
Následující článek
Cvičení k 7.-8. lekci C# .NET
Aktivity (16)

 

 

Komentáře

Avatar
adam440
Redaktor
Avatar
adam440:7.6.2012 14:45

Zdravim,
pěkný tutoriál ale mám dotaz. Dělám v C# něco jako databázi ale přes pole protože se tu zatím nenachází žádný tutoriál právě na databáze a já to s databázemi neumím, nevím jak docílit aby se do databáze mohly přidávat, odebírat či upravovat záznamy.

 
Odpovědět
7.6.2012 14:45
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na adam440
David Čápka:7.6.2012 14:50

Ahoj, přesně na toto se tu za chvíli objeví tutoriál. Jinak se k tomu používají nějaké vyspělejší kolekce. např. List.

Odpovědět
7.6.2012 14:50
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
LEXMORR
Člen
Avatar
LEXMORR:18.11.2012 10:19

Vysvetlíte mi niekto to {0}

Odpovědět
18.11.2012 10:19
Život je ako program, musíš si ho zorganizovať podľa seba, ale môže sa nájsť aj chybička
Avatar
..
Člen
Avatar
Odpovídá na LEXMORR
..:18.11.2012 10:47

Tomu se říká index parametru. Tam kde chceš aby byla vytisknutá např. proměnná dáš {0} (indexuje se od 0) a pak na konci textu za uvozovky uděláš čárku a napíšeš tu proměnnou. :)
Př:

int cislo = 10;
Console.WriteLine ("Na místo indexu se dosadí: {0}",cislo)

A výstup:
"Na místo indexu se dosadí: 10"

Editováno 18.11.2012 10:48
 
Odpovědět
18.11.2012 10:47
Avatar
..
Člen
Avatar
Odpovídá na ..
..:18.11.2012 10:52

U toho druhého řádku kódu mi chybí nakonci středník. Omlouvám se.

 
Odpovědět
18.11.2012 10:52
Avatar
matesax
Redaktor
Avatar
Odpovídá na ..
matesax:18.11.2012 11:01

To jsi napsal dost nešťastně. Pole je prakticky posloupnost elementů. Posloupnosti se učí snad už na základní škole - takže by jsi měl vědět, co to je - kdyžtak google. Posloupnost ti umožňuje přiřadit jednotlivým objektům specifickou pozici v jakékoliv kolekci elementů. No a pole použiješ v případě, že víš, jaká data v něm budou - a přesně víš kolik jich bude a prostě nehodláš s nimi hýbat - jen je tahat. Tedy když nebudeš chtít dělat nic dynamického - jen mít pole prvků. Proto poli musíš definovat rozměr - měl by jsi ho vědět - to je podstata pole... No a tak z nějakých 50% budeš ten počet a přesná data znát již při vzniku pole - někdy je třeba ještě něco přepočítat - na něco počkat a tak... Ale když víš přesně, jaká data tam budou, tak si můžeš dosazení do pole zjednodušit pomocí těch závorek {}. Dovnitř jednoduše naházíš ta data - ale pak již nemůžeš přidávat nová - nemusíš definovat velikost - ta se odvodí podle počtu elementů v {}. Ale když budeš chtít mít ještě 2 volná místa navíc, máš smůlu, leda by jsi tam dosadil nějaké defaultní hodnoty...

Editováno 18.11.2012 11:03
 
Odpovědět
18.11.2012 11:01
Avatar
mienkofax
Člen
Avatar
mienkofax:24.12.2012 15:59

Ahoj, pocuj ukazal by si mi prosimta nejaky prikald pouzitia Min, Max, Sum... lebo neviem ako to mam pouzit aby to fungovalo dakujem

 
Odpovědět
24.12.2012 15:59
Avatar
matesax
Redaktor
Avatar
Odpovídá na mienkofax
matesax:24.12.2012 16:32

array.metoda - co víc?

using System.Linq;

...

array.Max

array.Min

...
Editováno 24.12.2012 16:33
 
Odpovědět
24.12.2012 16:32
Avatar
matesax
Redaktor
Avatar
Odpovídá na matesax
matesax:24.12.2012 16:38

Blbost - bere se to z IEnumerable:

IEnumerable.Max/Min/...();
 
Odpovědět
24.12.2012 16:38
Avatar
fejjaaas
Člen
Avatar
fejjaaas:25.12.2012 12:08

Zdravím vás lidi, mám takový problém s metodami Take, Skip, Concat a dalšími.
Using System;, Using System.Linq; používám, ale při spuštění mi to místo výsledného a upraveného pole vrátí:

System.Linq.E­numerable+<Ta­keIterator>d__3a'1[­System.Int32]

Toto je konkrétně u metody Take. U zbylých je to trochu jiné, ale podstata stejná. Nevíte někdo co s tím?? Díky

 
Odpovědět
25.12.2012 12:08
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na fejjaaas
David Čápka:25.12.2012 13:38

Enumerable je tzv. interface, hodnotu tohoto typu si můžeš opět uložit jako pole. Např. takto:

int pole[] = tvojeEnumerable;
Odpovědět
25.12.2012 13:38
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:25.12.2012 13:46

A co IEnumerable.Tox­xx()? Je to asi jedno - že...

 
Odpovědět
25.12.2012 13:46
Avatar
fejjaaas
Člen
Avatar
Odpovídá na David Čápka
fejjaaas:25.12.2012 13:48

Zkusil jsem to takto:

int[] ciselnost = {1, 5, 2, 3, 4};
int[] pole = ciselnost.Take(3);

A píše mi to při spuštění (Takže jsem nezkoušel ani výpis zatím):

Typ System.Collec­tions.Generic­.IEnumerable<in­t> nelze implicitně převést na typ int[]. Existuje explicitní převod (nechybí výraz přetypování?)

 
Odpovědět
25.12.2012 13:48
Avatar
matesax
Redaktor
Avatar
Odpovídá na fejjaaas
matesax:25.12.2012 13:50

Viz. můj příspěvek... Používej tagy code pro vložení zdrojáku...

T name = ciselnost.Take(3).ToT();

T je proměnná používaná pro více typů - type... To znamená - místo T si dosaď List, array,...

Editováno 25.12.2012 13:53
 
Odpovědět
25.12.2012 13:50
Avatar
matesax
Redaktor
Avatar
Odpovídá na fejjaaas
matesax:25.12.2012 14:01

Používáš-li LINQ, či prostě nemáš-li důvod, nechávej to v IEnumerable... (Přetypuj až když to má smysl...)

Editováno 25.12.2012 14:02
 
Odpovědět
25.12.2012 14:01
Avatar
fejjaaas
Člen
Avatar
fejjaaas:25.12.2012 16:07

Děkuji mnohokrát všem, už mi všechny metody fungují :-).

 
Odpovědět
25.12.2012 16:07
Avatar
matus.kasper
Člen
Avatar
matus.kasper:3.5.2013 19:19

:) ahoj ako by ste riešili algotitmus ,pole nahodnych 100 prvkov, a z toho vybrat 3 najvačie prvky??

 
Odpovědět
3.5.2013 19:19
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matus.kasper
David Čápka:4.5.2013 20:53

Jelikož jsem líný a je jich jen 100, tak bych si to pole seřadil, kdybych to chtěl rychlé, jde to udělat v čase 3n.

Odpovědět
4.5.2013 20:53
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
baan
Člen
Avatar
baan:14.5.2013 12:31

dá sa metóda Reverse použiť na otočenie reťazca?
alebo mi ostáva iba toto:

public string otoc(string si)
{
string so = "";
foreach (char c in si)
so = c + so;
return so;
}

Odpovědět
14.5.2013 12:31
Viem, že skoro nič neviem.
Avatar
Kit
Redaktor
Avatar
Odpovídá na baan
Kit:14.5.2013 12:34

Asi za 10 sekund jsem vygooglil tohle:

public static string ReverseString(string s) {
    char[] arr = s.ToCharArray();
    Array.Reverse(arr);
    return new string(arr);
}
Odpovědět
14.5.2013 12:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
baan
Člen
Avatar
Odpovídá na Kit
baan:14.5.2013 12:58

malo by to byť rýchlejšie, dík!

Odpovědět
14.5.2013 12:58
Viem, že skoro nič neviem.
Avatar
Kit
Redaktor
Avatar
Odpovídá na baan
Kit:14.5.2013 13:03

Nejen rychlejší, ale spotřebuje to mnohem méně zdrojů. Když to děláš cyklem pro řetězec, který má třeba 100 znaků, tak 100× vyrobíš objekt typu řetězec, který vzápětí zahodíš. Nakonec použiješ jen ten poslední a zbytek necháš sežrat GC.

Odpovědět
14.5.2013 13:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
c# student
Neregistrovaný
Avatar
c# student:1.7.2013 20:16

Mam usporiadane pole a chcem vypisat prvych k clenov ako to spravim ? Dakujem

 
Odpovědět
1.7.2013 20:16
Avatar
Odpovídá na c# student
Michael Olšavský:1.7.2013 20:22
for(int i = 0; i < k; i++)
   Console.WriteLine(pole[i]);

Přečti si pořádně článek. Řekl bych, že to tu je ;-)

 
Odpovědět
1.7.2013 20:22
Avatar
c# student
Neregistrovaný
Avatar
Odpovídá na Michael Olšavský
c# student:1.7.2013 20:50

dik 8-)

 
Odpovědět
1.7.2013 20:50
Avatar
j.martenek
Člen
Avatar
j.martenek:31.7.2013 13:56

Zkopírujte si toto a zkuste to spustit, nefunguje mi to. Čísla se seřadí takto: 500,200,2,125,120. Číslo 2 je nejmenší, takže by mělo být na konci. Zkuste to a napište v čem je chyba. Tady je zdroják:
string[] cisla = { "125", "2", "500", "200", "120" };
Array.Sort(cisla);

foreach (string s in cisla)
Console.Write("{0} ", s);
Console.ReadKey();

 
Odpovědět
31.7.2013 13:56
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na j.martenek
Jan Vargovský:31.7.2013 13:59

Protože ty čísla bereš jako stringy, to znamená že se třídí podle ascii hodnoty. Změn si to pole na pole integeru a potom už by ti to mělo jít.

 
Odpovědět
31.7.2013 13:59
Avatar
j.martenek
Člen
Avatar
j.martenek:4.8.2013 11:00

Díky moc, už to funguje :). Jinak dá se nějak změnit barva písma a pozadí v konzoli??

 
Odpovědět
4.8.2013 11:00
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na j.martenek
Theodor Johnson:4.8.2013 12:27

Tohle jsem našel na MSDN, ale nezkoušel jsem to:

Console.BackgroundColor = ConsoleColor.Red;
Console.Clear();
Odpovědět
4.8.2013 12:27
Mo8ilε 15 Ѐλđ
Avatar
j.martenek
Člen
Avatar
j.martenek:4.8.2013 14:54

Pozadí se mi změnilo na červené, ale písmo zůstalo stále stejné. Ale i tak dík :)

 
Odpovědět
4.8.2013 14:54
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na j.martenek
Jan Vargovský:4.8.2013 15:18

Jestli chceš barvu písma tak je to

Console.ForegroundColor = Color ...
 
Odpovědět
4.8.2013 15:18
Avatar
j.martenek
Člen
Avatar
j.martenek:4.8.2013 17:15

Ok, dík moc, jste dobří. Já akorát ovládám html,css,trochu java script a teď začínám objektově orientované programování v C#. :)

 
Odpovědět
4.8.2013 17:15
Avatar
Johny
Neregistrovaný
Avatar
Johny:9.8.2013 8:55

U toho prvního příkladu není trochu zbytečné připisovat

for (int i = 0; i < pole.Length; i++)
Console.Write("{0} ", pole[i]);

když stačí jen připsat

Console.Write("{0} ", pole[i]);

k for cyklu (tomu prvnímu)? Jen si říkám, že se to zbytečně komplikuje a prodlužuje :) Akorát teda bez foreach už to nefunguje :D:)

 
Odpovědět
9.8.2013 8:55
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Johny
Theodor Johnson:9.8.2013 9:12

Šlo by to, ale není to nejlepší způsob pro začátečníky

Odpovědět
9.8.2013 9:12
Mo8ilε 15 Ѐλđ
Avatar
Libor Šimo (libcosenior):5.9.2013 16:22

Správne som pochopil, že do poľa možem dať napr. aj objekty?

Odpovědět
5.9.2013 16:22
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):5.9.2013 16:36

Super, to znamená, že ak viem, že počet prvkov v poli bude nemenný, je to vlastne najvhodnejšia koleknia.
Ale!
Možem v priebehu programu meniť v poli hodnoty atributov v jednotlivych prvkoch a tie ostanú zmenené?
Budem mocť získať z nich nové hodnoty?

Odpovědět
5.9.2013 16:36
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:5.9.2013 16:41

Nejvhodnější není, ale je nejrychlejší. Sám později zjistíš, proč není nejvhodnější.
Normalně můžeš s tím objektem můžeš pracovat jako kdyby v poli nebyl. Když jsou objekty v poli, přistupuješ k nim ale normálně přes index(indexy)

 
Odpovědět
5.9.2013 16:41
Avatar
Kit
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Kit:5.9.2013 17:00

Jestiže je počet prvků v poli neměnný, tak se nejspíš jedná o skutečné pole a je to v pořádku. Například šachovnice je pole. Nikdo jí nebude políčka přidávat ani ubírat. Když odebereš figurku, tak se ostatní figurky nehýbou.

Kdybys odebral položku ze seznamu, tak se dolní část posune nahoru. To už pole není. Když odebereš slovo ze slovníku, tak to také není pole.

O rychlosti se nebavme. Seznamy a slovníky bývají uvnitř implementovány jako pole, ale programátorovi to zůstává skryto.

Odpovědět
5.9.2013 17:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Libor Šimo (libcosenior):5.9.2013 19:52

Ďakujem. :)

Odpovědět
5.9.2013 19:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
NutelaCZ
Člen
Avatar
NutelaCZ:19.9.2013 19:49

Dobrý den,
rád bych se zeptal zda-li je možno vytvořit pole např.

string[] simpsonovi = {"Homer", "Marge", "Bart", "Lisa", "Meggie"};

a pak vypisovat náhodně jeho jednotlivé prvky?

Děkuji za radu :)

 
Odpovědět
19.9.2013 19:49
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na NutelaCZ
Jan Vargovský:19.9.2013 19:51

Ano bylo by to možné :) Jestli bys ale nechtěl, aby se prvky opakovali, tak bych to pole promíchal a pak vypsal normálně jeden po jednom :)

Editováno 19.9.2013 19:51
 
Odpovědět
19.9.2013 19:51
Avatar
NutelaCZ
Člen
Avatar
NutelaCZ:19.9.2013 20:01

No ono jdes spíš o to, to utvořit jako učební pomůcku pro Periodickou soustavu prvků :). Polem by byly prvky a vždy to vypsalo jeden prvek a pak bych to vložil do cyklu. Bohužel jsem nepřišel nato jak generovat náhodný prvek :(. Co se týče programování jsem začátečník takže mám celkem omezené schopnosti.

 
Odpovědět
19.9.2013 20:01
Avatar
NutelaCZ
Člen
Avatar
Odpovídá na Jan Vargovský
NutelaCZ:22.9.2013 15:14

A prosím prozradil bys mi jak nato? :)

 
Odpovědět
22.9.2013 15:14
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na NutelaCZ
Jan Vargovský:22.9.2013 20:09

No jednoduše máš pole těch prvků a zamícháš ho pomocí třídy Random a metody Next, je mnoho způsobů jak to pole zamíchat. Nebo jednoduše vypisovat náhodně, jestli by ti nevadilo, že by se to občas opakovalo. Já právě myslel, že to chceš náhodně vypsat a né nějak zkoušet. Kdyžtak řekni co přesně s tou tabulkou chceš dělat a poradím ti přímo :)

 
Odpovědět
22.9.2013 20:09
Avatar
spoprocky
Člen
Avatar
spoprocky:30.11.2013 16:13

mám dotaz kde bych sehnal info o tom jak vytvořit menu s obsahem HLAVNÍ MENU

P - Obsah/Povrch

J - Objem

O - Obvod

K - Konec
program musí vypočítat objem,obsah,obvod atd různých objektů jako třeba čtverec,jehlan,kruh atd díky za odpověd

 
Odpovědět
30.11.2013 16:13
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na spoprocky
Jan Vargovský:30.11.2013 16:45

Co konkrétně neumíš ? Psát tu za Tebe celý úkol nebudeme...

 
Odpovědět
30.11.2013 16:45
Avatar
spoprocky
Člen
Avatar
spoprocky:9.12.2013 13:00

mám dotaz jak mám zapsat abych měl pole ve dvou dimenzích nebo jenom jako příklad:funkce se zepta na pocet prvku v obou dimenzích pole a vytvori pole o daných počtech prvku tak mě zajímá jak bych měl zapsat větu:Obou dimenzích pole

 
Odpovědět
9.12.2013 13:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na spoprocky
Kit:9.12.2013 13:24

Jak zní dotaz? Zde je obvyklé, že se bavíme česky, slovensky a případně anglicky.

Odpovědět
9.12.2013 13:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na spoprocky
Jan Vargovský:9.12.2013 13:33

Zkus prosím nějak jinak vyjádřit co potřebuješ :)

 
Odpovědět
9.12.2013 13:33
Avatar
Rosemary
Člen
Avatar
Rosemary:17.12.2013 21:15

Super, díky moc za článek :D Pomohl mi.

 
Odpovědět
17.12.2013 21:15
Avatar
Zdeněk Bauer
Redaktor
Avatar
Zdeněk Bauer:17.12.2013 21:36

Jak vytvořit pole s neomezenou délkou?
V PHP si prostě vytvořím pole a plním si ho jak chci.
Ať hledám na netu jak chci, vždy najdu jen příklady kde vždy musím definovat tu délku.

 
Odpovědět
17.12.2013 21:36
Avatar
Motlja
Člen
Avatar
Odpovídá na Zdeněk Bauer
Motlja:17.12.2013 23:45

V C# je to List takže něco jako

List<string> listTextu = new List<string>();
listTextu.Add("prvni slovo");
Odpovědět
17.12.2013 23:45
Umím a učím se to co chci, to co mě baví a zajímá!!
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Zdeněk Bauer
Jan Vargovský:18.12.2013 0:29
http://msdn.microsoft.com/cs-cz/library/System.Collections(v=vs.110).aspx

Vyber si dle potřeby (každá kolekce se hodí na něco jiného).

 
Odpovědět
18.12.2013 0:29
Avatar
Johny Lewis
Neregistrovaný
Avatar
Johny Lewis:1.1.2014 10:06

Není ten foreach trochu zbytečný? Výsledek bude stejný, ikdyž k tomu for cyklu jen připojíme Console.Write. Nebo se to vyplatí jen v některých případech?

 
Odpovědět
1.1.2014 10:06
Avatar
Johny Lewis
Neregistrovaný
Avatar
Johny Lewis:1.1.2014 10:10

Tak se omlouvám, už to vidím, že je to nutné v případě stringu :D:)

 
Odpovědět
1.1.2014 10:10
Avatar
Quest
Neregistrovaný
Avatar
Quest:1.1.2014 22:49

Zkouším metody Concat, Inter a Union a po spuštění mi program vypisuje něco trošku jiného než jsem chtěl:System.Lin­q.Enumerable+­.......(nebudu to opisovat celé). Kód můžete vidět níže. Poradíte mi prosím - a hlavně nějak srozumitelně -, co s tím mám dělat?

string[] pole = {"Chelsea", "Arsenal", "Německo", "Uganda" };
string[] auta = {"BMW", "Audi", "Lexus", "Barney"};
Console.WriteLine("Concat: " + pole.Concat(auta));
Console.WriteLine("Inter: " + pole.Intersect(auta));
Console.WriteLine("Union: " + pole.Union(auta));
 
Odpovědět
1.1.2014 22:49
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Quest
Jan Vargovský:1.1.2014 23:01

Všechny 3 metody vrací IEnumerable<T> ... Nemůžeš vypsat kolekci pouze na jeden řádek. (Nemá přetíženou metodu ToString() tudíž se vypíše jen namespace k té třídě. Takže to nějak vypíšeš.

Třeba takto, nebo dalšími 1o-ti způsoby :)

string[] pole = { "Chelsea", "Arsenal", "Německo", "Uganda" };
            string[] auta = { "BMW", "Audi", "Lexus", "Barney" };
            Console.WriteLine("Concat: ");
            pole.Concat(auta).ToList().ForEach(t => Console.WriteLine(t));
            Console.WriteLine("Inter: " );
            pole.Intersect(auta).ToList().ForEach(t => Console.WriteLine(t));
            Console.WriteLine("Union: ");
            pole.Union(auta).ToList().ForEach( t => Console.WriteLine(t));
 
Odpovědět
1.1.2014 23:01
Avatar
Quest
Neregistrovaný
Avatar
Quest:2.1.2014 12:14

Ještě jedna otázka. Jak to mám udělat, abych to nevypsal, ale pouze uložil do proměnné? Například: budu mít 2 pole, v jednom budou státy JA a v druhém státy SA a budu je chtít pomocí Union sjednotit do pole Amerika (které je zatím úplně prázdné). Jak na to?

 
Odpovědět
2.1.2014 12:14
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Quest
David Čápka:9.1.2014 18:53

Podívej se do sekce LINQ, řeší se tam podobné dotazy na data.

Odpovědět
9.1.2014 18:53
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
pangas
Člen
Avatar
pangas:27.2.2014 20:10

Mám pole

int[] i = **{54,54,84,48,54,65,6,4,1,54,41,2,4,41,41};**

Jak má, prosím, vypadat příkaz distinct a average?

 
Odpovědět
27.2.2014 20:10
Avatar
Odpovídá na pangas
Ondřej Štorc:27.2.2014 20:16

Například takto:

int[] i = **{54,54,84,48,54,65,6,4,1,54,41,2,4,41,41};
int prumer = i.Average()
int[] pole_bez_duplicity = i.Distinct();
Odpovědět
27.2.2014 20:16
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
pangas
Člen
Avatar
Odpovídá na Ondřej Štorc
pangas:27.2.2014 20:24

Nevím, stále nejde, píše mi to 'cannot implicitly convert double to int....'

 
Odpovědět
27.2.2014 20:24
Avatar
Odpovídá na pangas
Ondřej Štorc:27.2.2014 20:25

v tom případě ten průměr nebude typu int ale double, se omlouvám já to nezkoušel.. :)

Odpovědět
27.2.2014 20:25
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na pangas
Jan Vargovský:27.2.2014 20:27
double prumer = i.Average();
 
Odpovědět
27.2.2014 20:27
Avatar
pangas
Člen
Avatar
pangas:27.2.2014 22:18

Děkuji Vám oběma. :) Stále však nesedí příkaz distinct. :/

 
Odpovědět
27.2.2014 22:18
Avatar
pangas
Člen
Avatar
Odpovídá na pangas
pangas:27.2.2014 22:42

Dobrý, už jsem na to kápl :D

 
Odpovědět
27.2.2014 22:42
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na pangas
Jan Vargovský:27.2.2014 23:07

Stačí za to dát ještě ToArray() :)

 
Odpovědět
27.2.2014 23:07
Avatar
RooBoo
Člen
Avatar
RooBoo:22.3.2014 20:52

je správne použitie? :

char a[]= {'a','b','c'};
public char getchar (int b)
{
    return a[b]
}

malo by mi vrátiť z poľa charov ten znak ktorý je na danom mieste.. teda ak b je 0 ta by malo vrátiť 'a' nie ? :)

Editováno 22.3.2014 20:53
 
Odpovědět
22.3.2014 20:52
Avatar
Eldan
Člen
Avatar
Odpovídá na RooBoo
Eldan:22.3.2014 21:18

Ano, je to správně :)

Odpovědět
22.3.2014 21:18
Unobfuscated executable == free source code
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na RooBoo
Jan Vargovský:22.3.2014 21:23

Koukni na indexované property. (resp. googluj "indexer")

Editováno 22.3.2014 21:23
 
Odpovědět
22.3.2014 21:23
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
pojerjunior
Člen
Avatar
pojerjunior:28.3.2014 14:48

neví někdo jak udělat přes pole když zadám text tak aby místo A bylo B a tak dále až do Z místo Z aby bylo A:)

 
Odpovědět
28.3.2014 14:48
Avatar
Odpovědět
28.3.2014 14:54
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
danar2004
Člen
Avatar
danar2004:3.4.2014 17:53

Ahoj, můžu poprosit, aby mi někdo vysvětlil následující konstrukci tak trochu "pro blbý"?

pole.Concat(auta).ToList().ForEach(t => Console.WriteLine(t));

Jde mi o ten ForEach. To předtím chápu. Znaky => mají nějaký speciální význam, tedy nečtou se jako "větší nebo rovno".. Je to tak?
Díky za odpověď.

Editováno 3.4.2014 17:55
 
Odpovědět
3.4.2014 17:53
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na danar2004
David Čápka:3.4.2014 17:54

Má to jiný význam, konkrétně je to technologie LINQ.

Odpovědět
3.4.2014 17:54
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na danar2004
Jan Vargovský:3.4.2014 18:27

Spojí dvě kolekce, převede na List a proiteruje každý prvek nazvaný 't' a vypíše ho do konzole.

 
Odpovědět
3.4.2014 18:27
Avatar
xxx
Člen
Avatar
xxx:27.4.2014 22:06

pekny tutorial, len keby tu je aj praca s viacrozmernymi polami

Odpovědět
27.4.2014 22:06
kto chce hlada sposoby, kto nechce hlada dovody...
Avatar
Michal Kolář:1.7.2014 8:46

Bylo by lepší nezaměňovat pojmy 'řazení' a 'třídění'.

 
Odpovědět
1.7.2014 8:46
Avatar
Anton Arnautov:24.7.2014 22:30

Davide, "zpoustu" :-D

Odpovědět
24.7.2014 22:30
Don't be a salad, be the best god damn brocolli you could ever be!
Avatar
Michal Kučera
Redaktor
Avatar
Michal Kučera :23.12.2014 21:58

Jen taková poznámka, myslím že pro ty co začínají by bylo lepší kdyby se tento kód:

int[] pole = new int[10];
pole[0] = 1;
for (int i = 0; i < 10; i++)
        pole[i] = i + 1;
foreach (int i in pole)
        Console.Write("{0} ", i);
Console.ReadKey();

přepsal na :

int[] pole = new int[10];
pole[0] = 1;
for (int i = 0; i < pole.Length; i++)
        pole[i] = i + 1;
foreach (int i in pole)
        Console.Write("{0} ", i);
Console.ReadKey();

Jen aby byl kód ošetřen. :) Je to jen můj názor ;).

Odpovědět
23.12.2014 21:58
Přes překážky ke hvězdám
Avatar
taflik
Člen
Avatar
taflik:10.2.2015 21:29

Ahoj, mám takový problémek, mám napsat program na převod z desítkové do binární soustavy, což není žádný problém. Prostě dělím dané číslo 2 a zapisuji zbytky, ale problém je zapsat to pozpátku, zkoušela jsem to přes pole, ale nějak mi to nefunguje :/

 
Odpovědět
10.2.2015 21:29
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na taflik
Jan Vargovský:10.2.2015 21:41

Můžeš použít Reverse metodu, ale ta ti pak vrací IEnumerable<char>, takže bys to pak celé musel vzít a udělat z toho string.

string binary = "1011";
binary = new string(binary.Reverse().ToArray());
Console.WriteLine(binary);
 
Odpovědět
10.2.2015 21:41
Avatar
dano.curda
Člen
Avatar
dano.curda:20.2.2015 17:18

Pardon za otazku amatera:
Prikazom -> int[] pole = new int[10]; ..nedeklarujeme pole o 11 intov?
pole[0] = 1;
pole[1] = 2;
pole[2] = 3;
pole[3] = 4;
pole[4] = 5;
pole[5] = 6;
pole[6] = 7;
pole[7] = 8;
pole[8] = 9;
pole[9] = 10;
pole[10] = 11;

Dakujem pekne za vysvetlenie. Skvele clanky!

 
Odpovědět
20.2.2015 17:18
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na dano.curda
Jan Vargovský:20.2.2015 17:29

Si to zkus, u posledního řádku ti to spadne, protože pole má indexy 0-9 (10 intů)

 
Odpovědět
20.2.2015 17:29
Avatar
hercik11
Člen
Avatar
hercik11:3.4.2015 0:38

Prosím mám dotaz,
mám pole int? a v něm mám null a potřeboval bych najít minimální hodnotu ale aby to nebralo to null, nevíte jak to vyřešit ?:)

 
Odpovědět
3.4.2015 0:38
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na hercik11
Jan Vargovský:3.4.2015 0:50

Nějak ti nerozumím, můžeš to trošku rozvést?

int? min = new int?[] { null, null, 5 }.Min();

Ti vrátí normálně minimální hodnotu hodnotu. Když máš všechny prvky null, tak musí vrátit null.

 
Odpovědět
3.4.2015 0:50
Avatar
fatst
Člen
Avatar
fatst:15.4.2015 20:46

Pokud to tu ještě někdo čte, vyskytl se mi problém s půměrem - Average().
Používám SharpDevelop a u Average mi to píše:

System.Array neobsahuje definici Average a nebyla nalezena žádná metoda rozšíření Average, která by přijímala první argument typu System.Array (nechybí direktiva using nebo odkaz na sestavení?) (CS1061) - C:\Documents and Settings\TST\Do­kumenty\SharpDe­velop Projects\C TEST 4\C TEST 4\Program.cs:25,68

V podstatě mi nejdou ani další metody jako Sum aj.

Co s tím? Co mi chybí? Kde to seženu? Jak to tam dostanu?

Editováno 15.4.2015 20:47
 
Odpovědět
15.4.2015 20:46
Avatar
fatst
Člen
Avatar
fatst:15.4.2015 20:52

Ještě doplňuji kód:

using System;

namespace C_TEST_4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Ahoj, spočítám ti průměr známek. Kolik známek zadáš?");
            int pocet = int.Parse(Console.ReadLine());
            int[] cisla = new int[pocet];
            for (int i = 0; i < pocet; i++)
            {
                Console.Write("Zadejte {0}. číslo: ", i + 1);
                cisla[i] = int.Parse(Console.ReadLine());
            }
           Console.WriteLine("Průměr tvých známek je: {0}", cisla.Average());


                        // Tohlke nemazat
                        Console.Write("Stiskni libovolnou klávesu... ");
                        Console.ReadKey(true);
                }
        }
}
 
Odpovědět
15.4.2015 20:52
Avatar
Odpovídá na fatst
Ondřej Štorc:15.4.2015 20:55

Average je v namespacu System.Linq (minuta googlení...)
Jinak mi tvůj dotaz přijde dost agresivní. A já když něco chci tak většinou poprosím a nenapíšu "Co s tím? Co mi chybí? Kde to seženu? Jak to tam dostanu?", ale něco ve stylu "Mohl by mi prosím někdo poradit? Děkuji", ale možná to takhle dělám jen já...

Odpovědět
15.4.2015 20:55
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
fatst
Člen
Avatar
Odpovídá na Ondřej Štorc
fatst:15.4.2015 22:05

Díky za odpověď a omlouvám se, tak to opravdu vyznít nemělo. Jen jsem v tom začátečník a nefunkce takovéto věci mě dost vyděsila a jak jsem byl rozjetý, že zatím vše chápu z tohoto, podle mě, opravdu skvělého tutoriálu, mám utrum a ani po Tvé odpovědi nějak netuším, jak s tím naložit.

A pokud Tě mohu tedy ještě požádat o vysvětlení toho "namespace System.Linq", jak s tím mám naložit. Našel jsem jen toto:
https://msdn.microsoft.com/…=vs.90).aspx
a koukám na to, jako na Stvoření.

Asi se to bude nějak týkat tohoto pro int:

public static double Average(
        this IEnumerable<int> source
)

ale kam s tím? Na začátku mi to nefunguje, vadí mu asi:

static void Main(string[] args)

Můžeš mi to, prosím (už nejsem tak vyděšená, díky za zklidnění), ještě vysvětlit?

 
Odpovědět
15.4.2015 22:05
Avatar
fatst
Člen
Avatar
fatst:15.4.2015 22:34

Už jsem na to přišel:

using System.Linq;

... ano, objevil jsem Ameriku a sypu si popel na hlavu.
Ještě jednou se omlouvám, pokud to vyznělo jinak, než mělo. Opravdu to byly jen emoce ze zděšení, co mi zase ten počítač po instalací aktualizací vyvádí. Reinstaloval jsem totiž Framework 3.5 i 4 a k tomu se mi ještě spustily aktualizace, tak jsem předpokládal i možnou chybu v systému.
Ještě jednou se omlouvám a díky za ochotu...

 
Odpovědět
15.4.2015 22:34
Avatar
Matěj Vítovec:7.11.2015 17:58

Mám pole potřebuji vždy přepsat první pozici pole[0] a ostatní posunout o jednu pozici př. pole[10] = pole[9]
nevíte někdo jak to udělat?
Díky

 
Odpovědět
7.11.2015 17:58
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Matěj Vítovec
Milan Křepelka:9.11.2015 6:24

Pokud bys chtěl něco na 0.té pozici něco opravdu přepsat a zároveň ostatní posunou musí ti logicky vzniknout na 1.pozici "díra". Nakresli si to.

 
Odpovědět
9.11.2015 6:24
Avatar
Odpovídá na Milan Křepelka
Libor Šimo (libcosenior):9.11.2015 8:00

Ak som ho správne pochopil, chce vlastne zmazať pole[] a všetko ostatné posunúť o jednu pozíciu späť. To znamená nové menšie pole.

Odpovědět
9.11.2015 8:00
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
ostrozan
Redaktor
Avatar
ostrozan:9.11.2015 8:34

Já naopak myslím, že chce stvořit Stack

int pole;

for(int i=pole.Lenght-1; i != 0; i--)
{
pole[i] = pole[i-1];
}

pole[0] =  nova_hodnota;
 
Odpovědět
9.11.2015 8:34
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na ostrozan
Milan Křepelka:9.11.2015 8:48

J. Chápu, tedy přidat na nultou pozici.

https://msdn.microsoft.com/…vs.110).aspx

 
Odpovědět
9.11.2015 8:48
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Matěj Vítovec
ostrozan:9.11.2015 12:43

.NET nabízí nátroje na všechno na co si vzpomeneš
v tomto případě kolekci Stack, případně Queue podle použití.

To ale poznáš, až se prokoušeš celým tutorialem.

Zatím bych si být tebou - podle toho, v jaké fázi se nacházíš - kolekcemi moc hlavu nemotal :) - ale je dobré to vědět.
Po pravdě - pole jako takové budeš používat minimálně, až poznáš komfort kolekcí

 
Odpovědět
9.11.2015 12:43
Avatar
Tomáš Jančák:11.4.2016 9:20

Ahoj,
chtěl bych poprosit o pomoc z jedním kodem, mám udělat program který vypočte obsah,obvod a poměr u obdelníku, obsah a obvod jsem už dal ale dělá my problém poměr aby byl zapsán nař. 2:3...
Zde dávám kod:

namespace Obdelnik
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Zadejte 1 číslo pro výpočet obsahu a obvodu obdélníka");
            double a = double.Parse(Console.ReadLine());
            Console.WriteLine("Zadejte 2 číslo pro výpočet obsah a obvodu obdélníka");
            double b = double.Parse(Console.ReadLine());
            Obdelnik obdelnik = new Obdelnik(a, b);
            Console.WriteLine("Obvod: " + obdelnik.Obvod());
            Console.WriteLine("Obsah: " + obdelnik.Obsah());
            Console.WriteLine("Pomer: " + obdelnik.Pomer());
            Console.ReadLine();
        }
    }
    class Obdelnik
    {
        private double a;
        private double b;

        public Obdelnik(double astrana, double bstrana)
        {
            this.a = astrana;
            this.b = bstrana;
        }


        public double Obsah()
        {
            return ((this.a + this.b) * 2);
        }
        public double Obvod()
        {
            return (this.a * this.b);

        }
         public double Pomer()
        {
            return (this.a / this.b);

        }
    }
}
 
Odpovědět
11.4.2016 9:20
Avatar
Odpovídá na Tomáš Jančák
Michal Štěpánek:11.4.2016 9:43

Založ si na to nové vlákno... Nehledě k tomu, že obvod a obsah máš prohozený...

Editováno 11.4.2016 9:45
Odpovědět
11.4.2016 9:43
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Tomáš Jančák:11.4.2016 9:57

Omlouvám se, myslel jsem ze se to sem bude hodit...

 
Odpovědět
11.4.2016 9:57
Avatar
Odpovídá na Tomáš Jančák
Michal Štěpánek:11.4.2016 10:02

Mě se omlouvat nemusíš, ale na řešení problému je vždycky lepší vytvořit si svoje vlákno, protože v příspěvcích u článku to může snadno "zaniknout", když někdo přidá komentář a na řešení by se vůbec nemuselo ani dostat...

Odpovědět
11.4.2016 10:02
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
 
Odpovědět
11.4.2016 10:19
Avatar
Odpovídá na Tomáš Jančák
Libor Šimo (libcosenior):11.4.2016 10:40

V céčku by som to napísal takto nejako:

#include <stdio.h>

/**
* Funkcia vyberie z dvoch cisiel to mensie a porovnava
* ci maju obidve cisla rovnakeho delitela najpr polovicou
* mensieho cisla, potom ho znizuje az po cislo 2.
* Ak je delitel rovnaky, vydeli nim obidve cisla.
* @param pointer na cislo 1 (je to zaroven aj vystupny parameter)
* @param pointer na cislo 2 (je to zaroven aj vystupny parameter)
*/

void pomer(int *cislo1, int *cislo2)
{
    int i;
    if (*cislo1 > *cislo2) {
        for (i = *cislo2 / 2; i > 1; i--) {
            if (*cislo1 % i == 0 && *cislo2 % i == 0) {
                *cislo1 /= i;
                *cislo2 /= i;
            }
        }
    }
    else {
        for (i = *cislo1 / 2; i > 1; i--) {
            if (*cislo1 % i == 0 && *cislo2 % i == 0) {
                *cislo1 /= i;
                *cislo2 /= i;
            }
        }
    }
}

int main(void)
{
    int a = 21, b = 10;

    pomer(&a, &b);
    printf("%d : %d", a, b);


    return 0;
}
Odpovědět
11.4.2016 10:40
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Tomáš Jančák
Libor Šimo (libcosenior):11.4.2016 10:45

Pomýlil som sa.
Spoločného deliteľa treba začať hľadať nie z polovice menšieho čísla, ale z celého a potom to znižovať až po 2.

Editováno 11.4.2016 10:47
Odpovědět
11.4.2016 10:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Nona Hansel
Člen
Avatar
Nona Hansel:9.8.2017 14:11

Ahoj všem, zkoušela jsem si víše uvedené příklady v kompileru .NET Fiddle a háže mi chybovou hlášku, když použiju některou metodu na poli, konkrétně se jedná o tuto hlášku:

Compilation error (line 9, col 17): 'System.Array' does not contain a definition for 'Distinct' and no extension method 'Distinct' accepting a first argument of type 'System.Array' could be found (are you missing a using directive or an assembly reference?)

Compilation error (line 16, col 56): 'System.Array' does not contain a definition for 'Average' and no extension method 'Average' accepting a first argument of type 'System.Array' could be found (are you missing a using directive or an assembly reference?)

Zkoušela jsem uvedený kód u výkladu k Distinct() a proměnné délce pole zadat i do jiných kompilerů a výsledná hláška tam byla úplně stejná. Naopak s metodami na třídě Array .NET Fiddle problém nemá.

Umíte mi někdo poradit, prosím? Děkuji.

 
Odpovědět
9.8.2017 14:11
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na Nona Hansel
Luboš Běhounek Satik:9.8.2017 14:22

chybí ti na začátku souboru řádek

using System.Linq;
Odpovědět
9.8.2017 14:22
https://www.facebook.com/peasantsandcastles/
Avatar
František Hejský:31.8.2017 11:04

Poraďte mi prosím, někde tam mám chybu

Console.Write­Line("Ahoj, spočítám ti průměr známek, kolik známek zadáš?");
int pocet = int.Parse(Con­sole.ReadLine());
int[] cisla = new int[pocet];
for (int i = 0; i < pocet; i++);
{
Console.Write("Za­dej {0}. číslo: ", i + 1);
cisla[i] = int.Parse(Con­sole.ReadLine());
}
Console.Write­Line("Průměr tvých známek je: {0}", cisla.Average());
Console.ReadKey();

 
Odpovědět
31.8.2017 11:04
Avatar
Odpovídá na František Hejský
Štěpán Halíř:31.8.2017 12:45

Ahoj,

for (int i = 0; i < pocet; i++);

v řádku máš for cyklus ukončený středníkem, smaž ho a půjde ti to - středník tam nepatří.

Editováno 31.8.2017 12:46
Odpovědět
31.8.2017 12:45
Per aspera ad astras
Avatar
 
Odpovědět
31.8.2017 14:20
Avatar
Oli Wonder
Člen
Avatar
Oli Wonder:7.10.2017 11:05

Ahojte mám problém . Ako docielim to aby Po vyzvaní uživateľa zadal prve druhé,tretie čísla a uložilo ich do poľa?

 
Odpovědět
7.10.2017 11:05
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Oli Wonder
pocitac770:7.10.2017 23:01

Například tak, že si vytvoříš pole o velikosti tři, a načteš první řádek s prvním číslem, uložíš na nultou pozici, načteš řádek s druhým číslem, uložíš na první pozici, načteš řádek s třetím číslem, uložíš na druhou pozici, to vše dáš do cyklu, aby to bylo jednodušší, easy peasy hotovo :)

 
Odpovědět
7.10.2017 23:01
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na pocitac770
Oli Wonder:8.10.2017 14:47

Ale neviem ako do poľa tipnuteCisla ich uložiť . Cez ReadLine mi to nejde

 
Odpovědět
8.10.2017 14:47
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na pocitac770
Oli Wonder:8.10.2017 14:54

Dobre už to mám :-)

 
Odpovědět
8.10.2017 14:54
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na pocitac770
Oli Wonder:8.10.2017 15:03

Len Ked použijem Console.Write­Line(tipnuteCis­la); tak to nefunguje

 
Odpovědět
8.10.2017 15:03
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Oli Wonder
pocitac770:8.10.2017 15:42

Tak si znovu pročti lekci, a koukni se, jak se vypisuje pole :)

 
Odpovědět
8.10.2017 15:42
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na pocitac770
Oli Wonder:8.10.2017 15:51

Už som na to tiež prišiel :D A nevieš ako docielim to že chcem aby sa Console.WriteLine zobrazil až po 3sec napr?

 
Odpovědět
8.10.2017 15:51
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Oli Wonder
pocitac770:8.10.2017 16:44

musíš nahoru přidat "using System.Threading;", a dále to v kódu použiješ jako Thread.Sleep(po­cetMilisekund);, v tvém případě 3000, ale snaž se si ten projekt ať děláš na čemkoliv co nejmíň komplikovat, máš se ještě hodně co učit

 
Odpovědět
8.10.2017 16:44
Avatar
Josef Středa:24.10.2017 8:54

Ahoj,
jak moc musím překopat
Console.Write­Line("Ahoj, spočítám ti průměr známek. Kolik známek zadáš?");
int pocet = int.Parse(Con­sole.ReadLine());
int[] cisla = new int[pocet];
for (int i = 0; i < pocet; i++)
{
Console.Write("Za­dejte {0}. číslo: ", i + 1);
cisla[i] = int.Parse(Con­sole.ReadLine());
}
Console.Write­Line("Průměr tvých známek je: {0}", cisla.Average());
Console.ReadKey();

abych to mohl použít ve win formu potřeboval bych aby se více rozměrné pole naplňovalo ze 4 různých textboxů
co textbox to " sloupec" ?

 
Odpovědět
24.10.2017 8:54
Avatar
Saimon Lázně Lasim:29.11.2017 19:01

Doufám , že jsem se jen nepřehlédl. Jak mám nahrát nějaký vstup jakožto hodnotu(-y) do pole, ať hledám kde hledám nikde to není, je to vůbec možné? Zkoušel jsem syntaxi typu cin>>pole; nebo cin>>pole[i]; bohužel mi to hodilo error. Díky :-D

 
Odpovědět
29.11.2017 19:01
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Saimon Lázně Lasim
gcx11:29.11.2017 21:51
pole[index] = hodnota;
 
Odpovědět
29.11.2017 21:51
Avatar
dez1nd
Člen
Avatar
Odpovídá na Saimon Lázně Lasim
dez1nd:30.11.2017 7:48

to o co se snažíš ty je v C++ ne ? v C# je to takto

pole[index] = hodnota;

(viz. gcx11)

Editováno 30.11.2017 7:48
 
Odpovědět
30.11.2017 7:48
Avatar
Walter
Člen
Avatar
Walter:20.12.2017 10:20

Zdravím,
chcel by som sa opýtať:
Mám napr. pole "pole_cisel", v ktorom je uložených 10 čísel.
double[] pole_cisel = {21.5, 12.3, 60.2, 123.4, 12.3, 21.5, 100, 100, 100, 100};

Potrebujem odstrániť duplicitné čísla, pričom čísla 100 odstraňovať nechcem a tiež nechcem, aby sa mi zmenšilo pole.
Metóda Distinct()
pole_cisel = pole_cisel.Dis­tinct().ToArra­y();
síce odstráni duplicitné hodnoty, ale odstráni aj 100-ky a tiež skráti pole:
{21.5, 12.3, 60.2, 123.4, 100}

 
Odpovědět
20.12.2017 10:20
Avatar
dez1nd
Člen
Avatar
Odpovídá na Walter
dez1nd:20.12.2017 11:55

a jaké hodnoty mají být místo duplicitních čísel ?

for(int i = 0; i <= 9; i++)
{
        if(pole_cisel[i] != 100)
        {
                pole_cisel[i] = tvoje dosazena hodnota;
        }
}
Editováno 20.12.2017 11:58
 
Odpovědět
20.12.2017 11:55
Avatar
dez1nd
Člen
Avatar
Odpovídá na dez1nd
dez1nd:20.12.2017 11:59

sorry to je blbost uz mi to nejde opravit

 
Odpovědět
20.12.2017 11:59
Avatar
Walter
Člen
Avatar
Odpovídá na dez1nd
Walter:20.12.2017 21:27

Namiesto duplicitných hodnôt by mala byť dosadená práve hodnota 100. Teraz si uvedomujem, že som to nešpecifikoval.
To čo si napísal nie je blbosť, len je to neúplné. Myslím, že si ma tým naviedol na riešenie. Doteraz som rozmýšľal nad existenciou nejakej metódy.

for (int i = 0; i < 10; i++)
{
    for (int j = i + 1; j < 10; j++)
        {
            if (pole[i] != 100 && pole[i] == pole[j])
                pole[j] = 100;
        }
}
 
Odpovědět
20.12.2017 21:27
Avatar
Walter
Člen
Avatar
Odpovídá na dez1nd
Walter:20.12.2017 21:31

Samozrejme pole[] rozumej pole_cisel[] :-)

 
Odpovědět
20.12.2017 21:31
Avatar
Ernest Kuki
Člen
Avatar
Ernest Kuki:31.3.2018 15:44

Moje řešení druhého příkladu ... může to takhle být? Vše funguje jak má

namespace CviceniDevateStredni
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Zadejte palindrom:"); // slovo které se čte stejně zleva i zprava
            string vstup = Console.ReadLine();  // holej vstup
            string vstupok = vstup.ToLower().Trim();   // vstup upravenej pro práci aby mně někdo neo**bal
            string prevrat = "";    // pracovní proměnná at mám to převrácení kam uložit

            for (int i = vstupok.Length - 1; i >= 0; i--)
            {
                prevrat += vstupok[i];
            }
            if (vstupok.Contains(prevrat))  // contains - metoda vraci true nebo false .. podle toho zda se prvek nachází v v poli

                Console.WriteLine("Ano, toto je palindrom.");
            else
                Console.WriteLine("Ne, toto není palindrom.");


            Console.WriteLine();
            Console.ReadKey();


        }
    }
}
 
Odpovědět
31.3.2018 15:44
Avatar
Ernest Kuki
Člen
Avatar
Odpovídá na Ernest Kuki
Ernest Kuki:31.3.2018 15:47

Vedle, omlouvám se ..

 
Odpovědět
31.3.2018 15:47
Avatar
Arny
Člen
Avatar
Arny:8.10.2018 22:07

Ahoj, zkouším si metodu copy a chci si zkopírovat 3 čísla z původního pole. Jak na to? Mám to takto:
int[] numbers = { 2, 6, 21, 45, 9, 45, 98 };
Array.Copy(num­bers,i,3);
foreach (int i in numbers)
Console.Write­Line("{0}", i);
Console.ReadKey();

 
Odpovědět
8.10.2018 22:07
Avatar
Vykuk
Člen
Avatar
Odpovídá na Arny
Vykuk:13.12.2018 13:11

Druhý parametr Array.Copy má být další pole, do kterého chceš kopírovat ty 3 prvky. Třeba int[] numbers2... Cyklus foreach by pak měl číst taky z toho druhého pole.

 
Odpovědět
13.12.2018 13:11
Avatar
Jana
Člen
Avatar
Jana:22. dubna 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. dubna 16:16
Avatar
Jana
Člen
Avatar
Odpovídá na Quest
Jana:2. května 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. května 12:01
Avatar
Odpovídá na Jana
Reaktivní uživatel:2. května 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. května 20:13
Kdo je připraven, toho zaskočí něco jiného
Avatar
Odpovídá na Jana
Lucie Dolinay:3. května 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. května 1:13
Avatar
Martin Patočka:6. srpna 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. srpna 11:03
Avatar
Odpovídá na Martin Patočka
Martin Havelka:6. srpna 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. srpna 13:11
Avatar
 
Odpovědět
6. srpna 17:14
Avatar
Zdeněk Srnský:3. září 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. září 15:50
Avatar
Odpovědět
3. září 18:31
Kdo je připraven, toho zaskočí něco jiného
Avatar
Jiří Dvořák:19. září 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. září 0:32
Avatar
Odpovídá na Jiří Dvořák
Jiří Dvořák:19. září 0:37

tak nakonec sem na to přišel sám :D

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.Write(pole[2] + " ");
            Console.Write(pole[0] + " ");

            Console.ReadKey();
 
Odpovědět
19. září 0:37
Avatar
Rebeka Bulkova:24. listopadu 17:03

Ahoj ahoj, čo sa týka toho average príkladu.... ide mi to iba ak dám using System.linq; ale vtedy mi neberie console. V čom je chyba? Ďakujem :)

 
Odpovědět
24. listopadu 17:03
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 142 zpráv z 142.