Avatar
Tomáš Střecha:

Ahoj,
zajímalo by mne, jak by se jednoduše udělali v konzoli třeba pracovní pozice. Myslím tím jejich zaplněnost. Tedy například: 1/3 Vývojářů. Myslím si, že by to určitě šlo pomocí pole, ale nedokáži najít takovou metodu k poli.
Předem děkuji za odpověď a za rady! :)

 
Odpovědět 26. listopadu 18:52
Avatar
Jan Bezdíček
Redaktor
Avatar
Odpovídá na Tomáš Střecha
Jan Bezdíček:

Jsem jediny kdo absolutne nepochopil, co chce ? :D

 
Nahoru Odpovědět  +4 26. listopadu 19:04
Avatar
Odpovídá na Jan Bezdíček
Libor Šimo (libcosenior):

Sorry, uklikol som sa na tablete, malo to byt plus. 8-|

Nahoru Odpovědět 26. listopadu 19:14
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Nahoru Odpovědět 26. listopadu 19:15
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Tomáš Střecha:

Omlouvám se, tento článek jsem psal ve spěchu. Myslel jsem tím o, zda je nějak zjistit jestli je pole plně zaplněné. Nevím jak přesně to mám popsat.
Představte si pole stringů o velikosti 3. Což by například měli být ty pracovní pozice. Ale pouze 2 z těch 3 by byly vloženy do pole. Existuje tedy metoda na vypsání kolik "částí" pole je "zaplněno"?
Ještě jednou se omlouvám, neumím moc vysvětlovat. :)

 
Nahoru Odpovědět 26. listopadu 22:00
Avatar
HONZ4
Člen
Avatar
Odpovídá na Tomáš Střecha
HONZ4:

chtělo by to trochu studia práce s poli

string[] pole = new string[3];
pole[1] = "zaplněné";
int zaplneno = 0;
foreach (string s in pole) if (s?.Length > 0) zaplneno++;
 
Nahoru Odpovědět 26. listopadu 22:14
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na Tomáš Střecha
Marian Benčat:

pole.Count(prvek=> prvek.IsNullO­rEmpty());

Neomezujte se na imperativni paradigma.

 
Nahoru Odpovědět 26. listopadu 22:22
Avatar
HONZ4
Člen
Avatar
Odpovídá na Marian Benčat
HONZ4:

spíš:
pole.Count(prvek => string.IsNullO­rEmpty(prvek)

 
Nahoru Odpovědět 26. listopadu 22:42
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na HONZ4
Jan Vargovský:

Lidi si tyhle statické věci přepisují na extension metody, takže to klidně může být tak, jak to má Marian :)

 
Nahoru Odpovědět  +1 26. listopadu 22:46
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Tomáš Střecha
ostrozan:

Možností je samozřejmě víc - třeba nepoužívat pole ale List + proměnnou s počtem zaměstnanců, kterou může nějaký admin v případě potřeby z měnit - velikost pole je jednou daná .

 int max_pocet_programatoru=5;
 List<string> programatori = new List<string>();

//pro  zacatek prijmeme tri lidi
 programatori.Add("Pepa");
 programatori.Add("Joe");
 programatori.Add("Jose");
 Console.WriteLine("Obsazenost programatoru je " + programatori.Count + " z " + max_pocet_programatoru);

 //Pepa dostane padaka
 programatori.RemoveAt(programatori.IndexOf("Pepa"));
 Console.WriteLine("Po vyhozeni Pepy je obsazenost programatoru " + programatori.Count + " z " + max_pocet_programatoru);

 //potrebujeme vic programatoru
 max_pocet_programatoru = 8;
 Console.WriteLine("Obsazenost programatoru je " + programatori.Count + " z " + max_pocet_programatoru);
Editováno 27. listopadu 10:17
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +3 27. listopadu 10:16
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Marian Benčat
ostrozan:

Začátečníkovi co je ve fázi hraní si s polem na konzoli bych asi nemotal hlavu LINQem - aby se nevyděsil :-)

 
Nahoru Odpovědět 27. listopadu 14:15
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:

ja mam tedy opacny nazor.

mne tedy .Count() , coz je jasne "pocet" a uvnitr ma proste tupou podminku prijde pro zacatecnika mnohem pochopitelnejsi nez ho hazet do OOP, metod, foreache a dalsich. Ale je to zrejme vec nazoru.

 
Nahoru Odpovědět  -1 27. listopadu 16:24
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:

Naopak tvuj kod bych oznacil jako neco, co snad ani nikde nepis,.. vzdyt to ani fungovat nebude :-ú

 
Nahoru Odpovědět 27. listopadu 16:25
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Marian Benčat
ostrozan:

No já to nikde psát nebudu , to se fakt neboj .
Má to sloužit jako názorný příklad toho, jaké výhody mají kolekce proti polím - a myslím že dost polopatitistický a i když tomu nevěříš tak funkční - zkus si to :-)

A evidentně z toho mojeho pochopil víc než z tvého

pole.Count(prvek=> prvek.IsNullO­rEmpty());

bez ukázky jak to vůbec použít

Mám z tebe trochu pocit, že bys nejradši v první třídě zavedl místo abecedy těsnopis - vždyť je tak úžasně rychlý a efektivní proti konvenčnímu psaní :-)

A ještě nerozumím jedné věci:

nez ho hazet do OOP, metod, foreache a dalsich

i v tvém výrazu je metoda Count() objektu pole

 
Nahoru Odpovědět  +1 27. listopadu 17:29
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:

Osobne si myslim, ze to pochopil od tebe protoze jsi mu tam napsal 2x vice komentaru, nez-li kodu.

Ne - ja bych nezavedl tesnopis, presto ze ho od mámy pár let umím, navíc jsem disgrafik, takze pravdepodobne bych napsal uplne neco jineho :'

.Count("selector") není objektový přístup. Dám ti jednoduchý příklad na kterém to pochopíš a který ti snad ukáže výhodu tohoto přístupu.

// Funkcionalni pristup -- vhodnejsi pro praci s daty, kazdy vi behem 5ti sec, co presne dela.

var poleAdres =
poleOsob
.Where(a=> a.Vek > 10)
.OrderBy(a=> a.Vek)
.Select(a => new Adresa(a))
.Skip(skipCount)
.Take(takeCount)
.ToList();

// Imperativni - neprehledny, stopni si za jak dlouho najdes bug? nikdo nevi prvnich X minut, co vlastne dela.

int count = 0;
int skipped = 0;

var poleAdres = new List<Adresa>();
póleAdres.Sort(a=>a.Vek);

for(var osoba in poleOsob) {
 if (count>takeCount) break;
  if (osoba.Vek > 10) {
    if (skipped<skipCount) continue;
    poleAdres.Add(new Adresa(a));
    count++;

}

A je tu jeste jedna vec.. zatimco funkcionalne napsany kod je pro optimalizace pomerne jasny "co vlastne chces" tak z toho imperativniho, se cast systemu, ktera ma na starost optimalizace vystreli mozek z hlavy. Nevi co chces delat, chybi mu semantika.

 
Nahoru Odpovědět 27. listopadu 19:35
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:

Jinak napsal bych ti jak vypada objektivni verze teto funkcionality, ale myslim, ze si to pochpil, proč nelze říci, že Count() je objektový přístup.. Je to Metoda, to jiste ano. ale není žádný problém udělat to pomoci cehokoliv jiného. Ostatně.

Pokdu si pracoval s nejakym funkcionalnimi jazykem, je ti jasne, ze LINQ je prave jedna ze 3 hlavnich prezentaci funkcionalniho paradigmatu, jelikoz jinde mas .sum() (count)¨, map() (SELECT), filter() (where), order() atd.

 
Nahoru Odpovědět  +1 27. listopadu 19:38
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Marian Benčat
ostrozan:

Ale jo já tomu rozumím - tady jde ale o něco jiného - ty na začátečníka, který začal možná před týdnem, možná včera vybalíš lambdu - což je pro tebe (cituju) " proste tupa podminka" , ale on nejspíš jen nevěřícně zírá - co je sakra to => to jsem ještě neviděl.

Mysli nato až budeš psát ty články, že je nebudou číst jen tobě rovní - a těch tu troufám si říct zas tak moc není.

 
Nahoru Odpovědět  +2 27. listopadu 22:08
Avatar
Odpovídá na Marian Benčat
Petr Čech (czubehead):

My všichni víme, že LINQ je mnohem pohodlnější ohledně zápisu, ale tady o to ani tak nejde. Jde o to, jak dát začátečníkovi nástroj k počítání prvků v kolekci. A LINQ zcela určitě není pro začátečníky vhodná, pomineme-li fakt, že to není podmínka ani omylem- tedy někde hluboko uvnitř .NET to pravděpodobně funguje jako podmínka, ale jako lambda výraz to podmínka není. Je to zkrácený zápis pro delegát, co má návratový typ bool, abychom byli přesní.

Nahoru Odpovědět  +2 27. listopadu 22:25
Why so serious? -Joker
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

Já vám ani nechci odporovat, vy máte pravdu, že chápat co je lambda a jak funguje je pro začátečníka nereálné.

Ale HLL jazyky jsou i k tomu, že "programátor" (věřte mi že v této souvislosti a větě mi to jde přes jazyk velmi těžko), nemusí vědět jak to funguje.

Vidí prostě Count a uvnitř "podmínku". Vidí Where a uvnitř podmínku, relativně jednoduché.. Nemusí znát jak seřadit věci, nemusí znát jak to funguje.

Ostatně proto se bohužel na středních školách šahá po HLL a je jedno, jestli je to Java, nebo PHP. Odstíní ho od toho jak ty věci fungují, nemusí řešit dynamickou alokaci paměti a další.

Já tu vnímám dva pohledy na věc:

Buďto se ho snažím odstínit od programování a algoritmizaci, k čemuž jsou HLL, knihovny, LINQ a další.. obzvláště pokud mám tušení, že ten daný člověk neumí programovat (kulantně řečeno, nemá zkušenosti s programováním). Což u Tomáše takto já osobně vnímám...

Tomáš prostě zřejmě začíná programovat, protože kdyby programoval, tak se nezeptá na takovouto věc. Tudíž já osobně se ho snažím odstínit od programování a algoritmizace.

Druhý a opačný příklad je, pokud někdo přijde a zeptá se: "hele jak v tomdle jayzce napíšu desktopovou aplikaci".

Snažte se také vy pochopit můj pohled na věc a sice rozdíl mezi:

"Jak mám uložit data a zjistit jejich počet" a "Jak se používá pole v C# a mají nějakou metodu na zjištění počtu"?

pokud chci pomoci s prvním případem, snažím se zjednodušit část algoritmizace a poskytnout řešení "magické" kde se využívá daná síla jazyka a odstíní vývojáře od používání buněk.

Kdežto u toho druhého vím, že ví jak se pracuje s daty, jak spočítat něco v jazyku počítače a jen nezná C#.

 
Nahoru Odpovědět 27. listopadu 22:50
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:

Ostrozane, až budu psát články (jestli se nademnou někdo smiluje), tak pujde u většině případů o články (možná bohužel?) pro zkušenější vývojáře, kde budu předpokládat vždy určitou znalost a také článek bude začínat:

"pro koho je to určeno".

A nemyslím teď opravdu nějakou Advanced znalost jazyka, ale aby v něm už měl něco napsáno a znal jeho konstrukce.

Kromě toho chystám hodně technologicky agnostických věcí, které se týkají architektury a myšlenkových pochodů při programování.

 
Nahoru Odpovědět  +2 27. listopadu 22:52
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Marian Benčat
ostrozan:

Ale mně je jasné, o čem a pro koho budou tvé články, jen aby byly aspoň psané tak jak v tomto vlákně komunikuješ se mnou, ne tak (stroze) jak jsi odpověděl zakladateli vlákna.
Jinak pokud jsi ve fázi, že sis požádal o redaktora a už jsi jim poslal svou práci k posouzení - tak neboj, oni se jistě "smilují" - jen jim to trochu trvá :-)

 
Nahoru Odpovědět 28. listopadu 5:22
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:

poslal jsem clanky na dotnetportale co jsem napsal, linkedin profil a CV. Kdyz bude zapotrebi nejdrive poslat clanek, tak holt nejdrive napisu clanek a poslu znovu. :D

Editováno 28. listopadu 8:54
 
Nahoru Odpovědět 28. listopadu 8: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 22 zpráv z 22.