Soutěž: Machr na C# .NET - Vícejazyčná aplikace

C# .NET .NET (C# a Visual Basic) Machr na C# .NET - Vícejazyčná aplikace American English version English version

Soutěž již skončila

Zadání

Vašim úkolem bude naprogramovat převodník jednotek, který bude nabízet více jazyků rozhraní aplikace. Aplikace při startu sama vybere nejvhodnější jazyk (například protože jsem v česku, tak češtinu), který použije a umožní uživateli jazyk v průběhu běhu aplikace měnit. Nemusíte podporovat milion jazyků, stačí dva. Povinná je čeština/slovenština a angličtina, další jsou bonusové (pro ty, kteří je ovládají). Představa je taková, že aplikace bude mít na začátku políčka s popisky Convert from a Convert to a když kliknu na češtinu tak se popisek políček změní na Převést z a Převést do.

Samotný převodník jednotek bude umět převádět jednotky míry (mm, cm, m, km), váhy (g, dkg, kg, t) a jednotky datové kapacity (B, KB, MB, GB, TB).

V tomto machrovi můžete použít pouze C# a nesmíte využít žádné externí knihovny. Vzhledem k přepínání jazyka se předpokládá využití GUI.

Výhra

Vítěz dostane placku Machr, pár samolepek a ocenění do portfolia.

Výhra

Výsledky

Jméno bodů Řešení ( Stáhnout vše )
Ondřej Štorc 68 Stáhnout řešení
Štefan Pružinský 65 Stáhnout řešení
Dan Balarin 60 Stáhnout řešení
michaall.k 58 Stáhnout řešení
Ridge 57 Stáhnout řešení
Daziko 56 Stáhnout řešení
skala_honza 52 Stáhnout řešení
František Boháček 46 Stáhnout řešení
Dávid Zita 46 Stáhnout řešení
Martin Bruna 45 Stáhnout řešení
Matyáš Černohous (Matesak) 35 Stáhnout řešení
Dan Kenny Balarin 0 Stáhnout řešení
Avatar
Michal Žůrek (misaz):

V této soutěži si naprogramuje vícejazyčný převodník jednotek, který bude umožňovat za běhu měnit jazyk, jakým s uživatelem "komunikuje".

Soutěž končí 7.7.2015 14:00:00, tak se nezapomeň zapojit! :-)

Odpovědět  +3 30.6.2015 20:59
Nesnáším {}, proto se jim vyhýbám.
Avatar
Štefan Pružinský:

Vidím, že si produktívny. :) Povzbudila ťa účasť na predchádzajúcich dvoch Machroch? :D Žeby som sa zapojil aj teraz...? :`

Nahoru Odpovědět 30.6.2015 21:04
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek (misaz):

Začali prázdniny, dva měsíce volna. :)

Nahoru Odpovědět  +2 30.6.2015 21:06
Nesnáším {}, proto se jim vyhýbám.
Avatar
Patrik Smělý (SogoCZE)
Tým ITnetwork
Avatar
Nahoru Odpovědět 30.6.2015 21:10
PHP můj oblíbený jazyk......
Avatar
Nahoru Odpovědět 30.6.2015 21:14
Nesnáším {}, proto se jim vyhýbám.
Avatar
Patrik Smělý (SogoCZE)
Tým ITnetwork
Avatar
Nahoru Odpovědět 30.6.2015 21:15
PHP můj oblíbený jazyk......
Avatar
Odpovídá na Patrik Smělý (SogoCZE)
Štefan Pružinský:

Od Michala slony nechci, on nás kŕmi algoritmami... :D

Nahoru Odpovědět  -1 30.6.2015 21:28
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Jiří Gracík
Redaktor
Avatar
Nahoru Odpovědět  +6 30.6.2015 21:36
Creating websites is awesome till you see the result in another browser ...
Avatar
Martin Dráb
Redaktor
Avatar
Martin Dráb:

Ah, to vypadá, že bych se mohl tentokrát i zapojit.

Nahoru Odpovědět  +1 1.7.2015 11:17
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Michal Žůrek (misaz)
Matyáš Černohous (Matesak):

Při převádění datových jednotek mám počítat s kapacitou v dekadické soustavě ? (1000 místo 1024) :)

Editováno 1.7.2015 20:37
 
Nahoru Odpovědět  ±0 1.7.2015 20:36
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

nechci rejpat, ale moc nevidím smysl zadání. Převod jednotek by snad měl zvládnout každý a více jazyků má WPF zabudovaný přímo v sobě. Nevídím žádnou kreativitu ani chalange. Můj názor :)

Nahoru Odpovědět  +7 1.7.2015 20:52
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Matyáš Černohous (Matesak)
Michal Žůrek (misaz):

záleží na tobě, ono je to zažité tak nějak různě, ale správně by to mělo být, tak jak Filip Šohajek uvedl odkazy.

Nahoru Odpovědět 1.7.2015 21:23
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na patrik.valkovic
Michal Žůrek (misaz):

když už tedy víš, že to WPF umí, tak si to máš zkusit napsat sám, asi chápeš, že za nativní řešení ve WPF nebude moc bodů.

Původně jsem to kvůli tomu chtěl omezit na Windows Forms, ale to by zas nikdo neřešil, tak jsem od toho upustil a doufal, že si na to řešení ve WPF nikdo nevzpomene. :D

Editováno 1.7.2015 21:25
Nahoru Odpovědět  ±0 1.7.2015 21:24
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
Ondřej Štorc:

A já se zrovna kvůli tomuhle machrovi dokopal naučit WPF :D

Nahoru Odpovědět 1.7.2015 21:28
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Nahoru Odpovědět 1.7.2015 21:37
Nesnáším {}, proto se jim vyhýbám.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
patrik.valkovic:

Proč by za nativní řešení nemělo být moc bodů? Je to řešení, které přesně splňuje požadavky, tak proč ho nepoužít? Právě kvůli tomu to WPF implementuje. Co budeš dělat v praxi? Používat existující řešení nebo programovat vlastní?

Nahoru Odpovědět  +3 1.7.2015 21:56
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na patrik.valkovic
Michal Žůrek (misaz):

samozřejmě, že v praxi je výhodnější použít nativní řešení, ale machr je o tom abyste si něco nového vyzkoušeli. Ve WPF to taky někdo implementoval.

Nahoru Odpovědět  ±0 1.7.2015 22:00
Nesnáším {}, proto se jim vyhýbám.
Avatar
Petr Čech (czubehead):

Zajímalo by mě, jak se bude testovat adaptace jazyka na prostředí. Pochybuju, že má někdo několik virtualizovaných Widlí s několika jazyky, takže to vidím tak, že vyharabeme nejnovější Michalův screen, zjistíme, v jakém jazyku má Windows a to bude zkrátka defaultní jazyk ]:> Ve zdrojáku se to bude muset někam šikovně schovat...

Nahoru Odpovědět 2.7.2015 15:12
Why so serious? -Joker
Avatar
Odpovídá na Petr Čech (czubehead)
Michal Žůrek (misaz):

dobrý nápad, ale mám dva počítače s Windows, každý v jiném jazyku. :)

Nahoru Odpovědět 2.7.2015 15:15
Nesnáším {}, proto se jim vyhýbám.
Avatar
Dan Kenny Balarin:

Mohl by jsi prosimtě smazat řešení z tohoto účtu, evidentně mám dva a při updatu jsem nahrál řešení jako druhá osoba :D BTW: dají se nějak spojit účty? (jeden přes email a druhý přes FB)

 
Nahoru Odpovědět 2.7.2015 16:14
Avatar
Odpovídá na Dan Kenny Balarin
Michal Žůrek (misaz):

nedají a ani nemám možnost ti odstranit to řešení. Budu hodnotit jen to co bylo nahráno z účtu Dan Balarin. Kdybys moc chtěl případnou placku dostat do účtu Dan Kenny Balarin, tak napiš PM.

Editováno 2.7.2015 16:17
Nahoru Odpovědět 2.7.2015 16:16
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
Dan Kenny Balarin:

Oukej :) BTW: jen k té diskuzi o něco výše, já žil v domění že WPF je novější, modernější než windows forms -> lepší. Mýlil jsem se?

 
Nahoru Odpovědět 2.7.2015 16:19
Avatar
Odpovídá na Dan Kenny Balarin
Michal Žůrek (misaz):

ne nemýlil jsi se. WPF je lepší a modernější.

Nahoru Odpovědět 2.7.2015 16:29
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
Matyáš Černohous (Matesak):

Teď jsem zmatený jak bude probíhat hodnocení. Bude se hodnotit lépe to, jestli jsem si sám napsal lokalizaci a nepoužil integrovanou ve wPF ?

 
Nahoru Odpovědět 2.7.2015 17:09
Avatar
Odpovídá na Matyáš Černohous (Matesak)
Michal Žůrek (misaz):

lépe se bude hodnotit, když si lokalizaci napíšeš sám.

Nahoru Odpovědět 2.7.2015 17:13
Nesnáším {}, proto se jim vyhýbám.
Avatar
Martin Bruna
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Martin Bruna:

Aplikace si vybere jazyk a na počátku bude angličtina co je to za blbost?
Jaký jazyk má tedy být jako default systém/angličtina?

 
Nahoru Odpovědět 5.7.2015 18:06
Avatar
Odpovídá na Martin Bruna
Michal Žůrek (misaz):

aplikace si vybere vhodný jazyk, tak jak ona uzná za vhodné. Angličtina byl příklad. To jak budeš posuzovat nejvhodnější jazyk je na tobě.

Nahoru Odpovědět 5.7.2015 20:20
Nesnáším {}, proto se jim vyhýbám.
Avatar
joci
Člen
Avatar
joci:

Clovek na tom maka od stredy a na konci ho zastavi vec, pri ktorej neviem co dalej. :( Tak z tohto machra nebude nic. No, mozno nabuduce.

Nahoru Odpovědět 6.7.2015 21:39
Svet patrí tím, ktorí sa neposerú.
Avatar
Odpovídá na joci
Michal Žůrek (misaz):

16 hodin do konce, honem ještě google nebo se nenápadně zeptej na fóru. :)

Nahoru Odpovědět  +2 6.7.2015 21:41
Nesnáším {}, proto se jim vyhýbám.
Avatar
joci
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
joci:

Ten uz nie, ale uz sa tesim na dalsi. :D

Nahoru Odpovědět 6.7.2015 21:50
Svet patrí tím, ktorí sa neposerú.
Avatar
Odpovídá na joci
Ondřej Štorc:

Věř mi že se vše dá s trochou snahy vygooglit :)

Nahoru Odpovědět  +1 6.7.2015 21:54
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Martin Bruna
Člen
Avatar
Odpovídá na joci
Martin Bruna:

Nikdy to nevzdavej at je to jakejkoliv problem. Ikdyby reseni melo trvat cele den (klidne i dny), o to bude potom ta radost zes to vyresil vetsi :D

 
Nahoru Odpovědět  +2 6.7.2015 22:46
Avatar
joci
Člen
Avatar
Odpovídá na Martin Bruna
joci:

Nie, ved ja to nechcem vzdat, len hovorim, ze toho machra sa nezucastnim, ale tu chybu budem hladat dalej.

Nahoru Odpovědět  +1 6.7.2015 22:53
Svet patrí tím, ktorí sa neposerú.
Avatar
Odpovídá na Michal Žůrek (misaz)
Štefan Pružinský:

Tak, pripájam sa aj ja. :)
Mal som na to dosť málo času, ale ja napriek tomu som stihol všetko čo som chcel. Aplikácia je plne objektová, má jednoduchú možnosť rozšírenia o ďalšie veličiny, ktoré sa automaticky zaradia do programu, podporuje lokalizáciu až do 51 jazykov požitím prekladacej API, je tam požitý LINQ to XML, atď...
Kvôli časovej tiesni som stihol okomentovať len triedy, ale myslím, že kód hovorí sám za seba. :D Pri niektorých viac urozprávaných jazykoch text prekrýva časť iných ovládacích prvkov... :(

Editováno 6.7.2015 23:05
Nahoru Odpovědět 6.7.2015 23:03
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Dan Balarin
Člen
Avatar
Odpovídá na Štefan Pružinský
Dan Balarin:

A to jsem si řikal že se nebude účastnit moc a lidí a když už mám tu chvilku volnou že se zapojim :D teď když tak koukám na tvůj koment tak asi nic :D ale tak co, alespoň účast :D

Nahoru Odpovědět 6.7.2015 23:16
"The number one benefit of information technology is that it empowers people to do what they want to do. It lets...
Avatar
Michal Žůrek (misaz):

Výtvory byly průměrné. Většina z Vás však vůbec nepřemýšlela nad něčím, co se označuje UX. Znamená to jak moc pohodlné je používaní aplikace. Až na jednoho jste první po spuštění aplikace na mě vybafli, převod milimetrů na milimetry. Myslíte si, že skutečně chci převádět milimetry na milimetry? A chci vůbec převádět něco tak malého jako jsou milimetry. Co třeba převod m > cm nebo něco podobného a pravděpodobnějšího. Druhá věc je že nemusím klikat na převést, ale že se to převede samo, však co jiného než převést bych mohl od převodníku jednotek chtít?

Když jsem vymýšlel zadání říkal jsem si jakou jednoduchou aplikaci sem dát. Napadl mě převodník jednotek. Něco tak primitivního jako je převodník jednotek prostě musíte zvládnout bezchybně. Ano nemusí to být dokonale objektové a bůh ví co všechno, ale prostě když jsem blbec a zadám že chci převést 1024 Mb na Mb, tak mi to prostě musí vypsat 1024. Asi dva z Vás vypsali něco jiného. Jistojistě jste si všimli že se tu řešilo 1000 vs 1024, většina z Vás zvolila 1000, protože to pak nemusí komplikovat, takže jste do slovníku delka zadali všechny míry, pak jste to překopírovali změnili delka za hmotnost, a pak do třetice zkopírovali a změnili hmotnost za data. A jsme opět u problému, co když všechny nebudou 1000 a bude to komplikovanější? Tak tam dáme podmínku! ... Špatně. Prostě v zásadě musíte mít objekt BlaBlaConvertor, který bude převádět podle toho co převádí, kapacitu prostě převede podle 1024 a palce na 2.54. Když budouc COnvertory moc podobné budou od sebe dědit.

Celkem bylo 100 bodů, bodování tentokrát bylo zajištěno tabulkou v Excelu, takže je neprůstřelné. 10 bodů bylo věnováno, že se mi aplikace na anglických Windows spustila v angličtině. 10 bodů také bylo věnováno tomu že jste zvládli převést

1215m = 1,215km
15g = 0,015kg
8b = 1B
ahoj kg nevyhodí neošetřenou vyjimku
1024 Mb = 1 Gb // popř 1,024 gb
1024 Mb = 1048576 Kb // popř 1024000 kb
1024 Mb = 1024 Mb

a 10 bodů bylo za to, že jeden převodník = 1 třída, která buď něco implementuje nebo dědí.

Když jste měli za toto 30 bodů v podstatě jste vyhráli. těch dalších 70 bodů se dalo nasbírat víceméně snadno, některé byli víceméně zadarmo a dostali je úplně všichni.

Příště to doufám bude bez prasáren. Pokud to projde přes Zdeňka, tak brzy bude OOP.

Přečtěte si i jednotlivé hodnocení níže. Nevypisoval jsem všechno všem, poněvadž bych to musel kopírovat, Přečtěte si i hodnocení ostatních a vyzkoušejte si zdali neduhem netrpí i vaše aplikace.

Nahoru Odpovědět 7.7.2015 14:47
Nesnáším {}, proto se jim vyhýbám.
Avatar
Michal Žůrek (misaz):

Díky všem za účast, zde jsou výsledky:

Dan Balarin - 60 bodů
Tvé řešení je velmi dobré. Převodník zvládá převést i bity na byte. Nicméně jednou mi to vyhodilo výjimku ve formuláři na řádku 119, kde se nepovedlo něco načíst. Kódu chybí nějaké managery, jejich práci obstaráváš ve formuláři, což by se nemělo. Kód obsahuje duplicitní kód, proč má každý konvertor úplně stejnou metodu Convert, když ji přeci mohou zdědit? Metoda Convert navíc dělá více věcí, což by neměla. Např upravovat desetinnou čárku a tečku by měla dělat nějaká jiná metoda. Dobré je, že převodník si sám detekuje sadu jednotek, mezi kterými převádí. Uživatelské rozhraní sice není nic extra, ale zato se velmi dobře používá. Škoda že jsi neimplementoval automatické vybírání vhodného jazyka při startu aplikace. Na Anglických Windows se mi vybrala čeština.

Ondřej Štorc - 68 bodů
Neumí ti to převádět bity (malé b = bit, velké B = byte). 1B = 8b. Kód máš pěkně rozdělen do tříd, kdybys však místo rozhraní použil třídu, ze které by převodníky dědily, tak bys nemusel všem kopírovat stejnou metodu Convert, a základní číslo bys pak udal jenom u DataUnits, kde je jiné než normálně. Oceňuji, že aplikace mi na anglických Windows vybrala jako výchozí jazyk angličtinu.

Dan Kenny Balarin - 0 bodů

Matyáš Černohous (Matesak) - 35 bodů
Už při spouštění ti to spadlo s neošetřenou výjimkou, protože aplikace hledá dočasnou složku, kterou si sama nevytvoří. Vytvořil jsem ti ji tedy ručně, ale reálná aplikace toto prostě musí umět. Navíc ti to nějak špatně převádí. Když si dám data, a chci převést 1024 Kb na (třeba Kb), tak mi to vypíše 1024 Kb je 102 Kb, hmm…, tady asi něco nehraje.

František Boháček - 46 bodů
Posílá se sice celý projekt, ale to už nevadí. Příště se neboj zeptat. Převádí ti to trošku divně, když zadám, že chci převést MB na MB, tak mi to vypíše že 1000Mb je 1Mb, hmmm, tady asi něco nesedí. Zkus se v OOP podívat na polymorfismus. Řádově se tvůj kód zjednoduší. Po jeho čtení jsem nabýval dojmu, že i když existuje jednoduché řešení, tak ty to zrovna musíš vše řešit co nejsložitější. To se ti taky vymstilo u převodu stejné na stejné. Uživatelské rozhraní vypadá trochu zastarale a nebylo by na chybu si alespoň trochu aplikaci odladit, aby se i lépe používala, třeba místo tlačítkem šlo převádět rovnou automaticky, když se změnil obsah textového políčka.

Ridge - 57 bodů
Možná by na úvod nebylo špatné pojmenovat projekt lépe než WindowsFormsAp­plication21. Schválně co dělá (aniž by ses na ni podíval) WindowsFormsAp­plication15? Čeština má háček nad C, když už děláš jazykovou aplikaci, bylo by dobré si i takovéto blbosti pohlídat. Přeci jen je trochu divné, když titulek aplikace diakritiku obsahuje a zbytek aplikace ne. Aplikaci bys měl přeložit celou, nesmíš zapomenout ani na titulek, který zůstává v češtině. Je skvělé, že jsi implementoval automatický výběr jazyka.

skala_honza - 52 bodů
Nebylo by špatné udělat každý převodník vlastní třídou, protože sice jednotky datové kapacity se dají převádět po 1000, ale kdybychom do metrických chtěli dát jednotky imeriální (palce, stopy, atd.), program to moc nepobere. Program ti celkem dobře převádí, ale nezná bity (b bit a B byte je rozdíl, 1B = 8b).

Daziko - 56 bodů
15g není 0.15kg, ale 0.015kg. Aplikace má průměrné uživatelské rozhraní, stejně tak se ovládá celkem standardně. Nebylo by špatné třeba zvážit, že bych nemusel u používání aplikace tolik klikat. Dá se toho docílit třeba tak, že nebude žádné tlačítko konvertovat, ale zkonvertuje se to automaticky už při zadávání vstupního čísla. Nicméně je pěkně objektově napsaná.

Martin Bruna - 45 bodů
Podporuješ jak bity tak bajty, ale zapomněl jsi na základní jednotku bitů - bit. Rozeznává se mále b (bit) a velké B (byte) 1B = 8b. Doporučuji se podívat na polymorfismus, výrazně tím „odprasíš“ svůj kód. Není špatné taky popřemýšlet nad výběrem výchozí zobrazené jednotky. Skutečně chce uživatel nejběžněji převádět milimetry?

Dávid Zita - 46 bodů
Kód je otřesný, ale aplikace jinak funguje celkem dobře. Uživatelské rozhraní je povedené (sice mi moc nesedí barvy, ale to je subjektivní). Působí historickým dojmem (možná kvůli obrázkům vlejek), mohl jsi ji vyšperkovat o historické jednotky, jako jsou různé pinty, lokty, a podobné.

Štefan Pružinský - 65 bodů
Jako jediný jsi mi vybral správně základní jednotku, nikoli nějaké zaprdkané milimetry. Nemáš ošetřené výjimky (opět jako jediný) při převodu slova Ahoj na metry. Když jsi prohlásil, že máš 51 jazyků, tak jsem si řekl WOW a pak mi vypadl internet. :D Ale neber to tahle. Nápad to byl dobrý, já bych to řešil asi podobně, ale přeci jen si musíš nějak zajistit aspoň základní jazyk (třeba Angličtinu), který bude fungovat, když vzdálený překladač nebude dostupný.

michaall.k - 58 bodů
Aplikace je pěkná, funguje dobře, ale nebylo by špatné se naučit aspoň základy objektově orientovaného programování. To načítání jednotek je dost hnusné a celkem i nepraktické. Oceňuji, že tvoje aplikace si vybrala vhodný jazyk pro start.

Placku tedy získává Ondřej Štorc, Štefan Pružinský (stevkopr). Gratuluji :)

Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět  +2 7.7.2015 14:47
Nesnáším {}, proto se jim vyhýbám.
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
IT Man:

Gratuluji výhercům. :)

Štefan Pružinský: Konečně jsi se dočkal placky. :)

Editováno 7.7.2015 14:58
Nahoru Odpovědět  +1 7.7.2015 14:58
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Ridge
Člen
Avatar
Ridge:

Gratuluji vitezum a Michalovi dekuji za hezkeho machra :)

Nahoru Odpovědět  +1 7.7.2015 15:22
use brain.
Avatar
Odpovídá na Michal Žůrek (misaz)
Štefan Pružinský:

Tak ďakujem Bohu aj Michalovi, že to konečne vyšlo. :)
Michal Žůrek (misaz) Na 2. mieste som asi kvôli tej neošetrenej výnimke ("ahoj"), nie? :( Pretože na ostatné prvky vyhrávam...
Ondřej Štorc Blahoželám k 1. miestu. :)
IT Man Ďakujem. :)
Máš ešte jednú organizačnú otázku: Komu mám poslať svoju poštovú adresu... Zdeněk Pavlátka ?
Ešte raz ďakujem. :D

Nahoru Odpovědět 7.7.2015 15:29
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek (misaz):

za jakoukoliv neošetřenou výjimku je -5 bodů, tzn, že tobě to neošetřenou výjimku hodilo jednak u ahoj, jednak, když jsem byl odpojený od internetu. = -10 bodů, ale napsal jsem ti -2, protože 51 jazykům se nedá odolat. Jinak jsi ztratil body v celkem 8 (z 25) kolonkách. :P

Nahoru Odpovědět 7.7.2015 15:38
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
Štefan Pružinský:

A ako je to z posielaním placiek? Komu mám poslať tú adresu?

Nahoru Odpovědět 7.7.2015 17:01
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek (misaz):

Řešení publikujte klasickou cestou jako program a adresu pošlete Zdeněk Pavlátka do PM.

Je možné, že je na dovolené, takže na placku asi budete muset pár dní počkat.

Nahoru Odpovědět  +1 7.7.2015 17:03
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
František Boháček:

Gratuluji vítězům

Bohužel mě až dnes napadlo, jak bych ten kód mohl zjednodušit a bylo to právě dědičností, která s polymorfismem souvisí, tedy, pokud jsem polymorfismus pochopil správně. Bohužel jsem se dnes ještě nedostal na počítač a nemohl jsem kód doladit, snad to bude příště lepší, díky za soutěž a hlavně za to hodnocení, že mne většinou napadajǐ nejtěžší cesty, to je pravda, ale tady mě až do dneška nenapadlo, jak to zjednodušit

 
Nahoru Odpovědět  +1 7.7.2015 17:09
Avatar
Odpovídá na František Boháček
Michal Žůrek (misaz):

podívej se na řešení od Dan Balarin, tam to je vyřešené. Každý převodník má svojí třídu, která z něčeho dědí a když se něco převádí komplikovaněji, tak se to změní jen tam v té jedné třídě. Do logiky samotného programu už nebudeš muset sahat.

Nahoru Odpovědět 7.7.2015 18:04
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
Dan Kenny Balarin:

Za prve bych rad podekoval za machra na C# a ocenil bych jich vice behem prazdnin :) jinak k te vyjimce, nevim kde se tam objevila, co jsem zkousel tak mi nic nevyskocila ovsem ne vse bylo v try catch bloku takze to je mozne. K tomu dedeni/duplicitnimu kodu, kdyz jsem to presunul do rodicovskeho convertoru tak to tam hazelo nejakou chybu kterou jsem uz bohuzel nemel cas resit. Jinak me ted napadlo ze ty prevadece mohli byt zapsany v nejakym JSON souboru, coz by resilo duplicitni kod a zaroven by to bylo lepe rozsiritelne. Kazdopadne diky za treti misto i kdyz za to nic neni :D a gratulave vytezum :)
PS: ty body jsou jen k hodnoceni nebo i pro odemykani clanku?

Editováno 7.7.2015 18:28
 
Nahoru Odpovědět 7.7.2015 18:27
Avatar
Odpovídá na Dan Kenny Balarin
Michal Žůrek (misaz):

body jsou zde jen k hodnocení. :) U tebe jsem placku zvažoval, ale 3 mi nedovolili. Kdy bude další machr nevím, protože "schvalovatel" machrů je nejspíš na dovolené (nereaguje na PM).

Nahoru Odpovědět 7.7.2015 18:29
Nesnáším {}, proto se jim vyhýbám.
Avatar
Martin Bruna
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Martin Bruna:

Mohl by si prosím rozvést proč je kód zaprasenej, nějak mi není jasný co dělám špatně.

 
Nahoru Odpovědět 7.7.2015 19:37
Avatar
Odpovídá na Martin Bruna
Michal Žůrek (misaz):

Tak si otevři soubor Konvertor.cs. Hned konstruktor je jedna velká pohroma. Načítat všechny jednotky takhle je dost velký hnus. Když se ti mírně změní struktura ukládání jednotek, tak to musíš celé přepsat, pro každou jednotku zvlášť, což je dost nepraktické. navíc to ani není příliš univerzální, protože když se zase podíváme do třídy Jednotka, tak je tam milion nadefinovaných a do listu narvaných jednotek, které ještě ani nejsou nijak unifikovaně členěný. Už od pohledu je trochu divné, když pod Mili je Gibi. Což jsou předpony, které spolu vůbec nesouvisí. Všechny jednotky samozřejmě ani nemusíš vypisovat, stačí si je dát do pole např

string[] jednotky = ["k", "M", "G", "T", "P"];

a pak počítat že rozdíl jsou tři nuly nebo tak jak si to nastavíš, to ale samozřejmě nefunguje vše a pro takovéto elegantní řešení bys potřeboval tu strukturu, kdy máš od sebe navzájem oddělené jednotlivé veličiny, protože většinou platí že alespoň v rámci jedné veličiny ty pravidla platí. No a když pravidla neplatí, tak u té dané veličiny to přepíšeš, tím se samozřejmě vyvaruješ riziku, že si rozbiješ celou aplikaci - když už si něco rozbiješ tak jen tu jednu specificky upravovanou veličinu.

V okamžiku kdy definuješ hromadu věcí, tak tak ten formát musí být co nejprimitivnější, pokud není je okolo toho

public static Jednotka blabla = new Jednotka(blabla);

tak už je to hrozně komplikované a ve většině případů i zbytečné, jako třeba zde. Někdo to řešil tak že vypsal právě do pole všechny jednotky a pak "řekl" že převodní vztah mezi jednotkami je 1024 a fungovalo to. Ty tady definuješ převodní vztah ke každé jednotce, úplně zbytečně, navíc je to hrozně dlouhé.

Nahoru Odpovědět 7.7.2015 20:02
Nesnáším {}, proto se jim vyhýbám.
Avatar
D0ll0k
Člen
Avatar
D0ll0k:

Ach jo :/ už snad půl roku čekám na machra, kterého bych mohl zvládnout a zrovna když je, tak jsem pryč a bez internetu.

Nahoru Odpovědět 7.7.2015 20:15
Ten, co se snaží "programovat"
Avatar
MadaraCZech
Redaktor
Avatar
Odpovídá na D0ll0k
MadaraCZech:

To je ještě v pohodě. Já tuhle úlohu dělal týden, každý den tři hodiny, udělal jsem plno funkcí, včetně vlastního jazyku a pak to zapomenu uploadnout, takže jsi na tom lépe, jak já. Ale tak machr slouží k tomu, aby ses naučil něco nového, což se u mě povedlo, naučil jsem se jak rozpoznat jazyk v systému. Úlohu můžeš udělat kdykoliv, jen je menší motivace.

 
Nahoru Odpovědět  +2 7.7.2015 20:22
Avatar
Odpovídá na Michal Žůrek (misaz)
Ondřej Štorc:

Tak to jsem nečekal :O :D Taky mě to napdalo s tou dědičností, ale to už jsem měl tu aplikaci skoro dopsanou tak jsem se na to vykašlal :D Jinak chci taky pogratulovat @Štefan Pružinský (stevkopr)|11783@

Nahoru Odpovědět  +1 7.7.2015 20:52
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Michal Žůrek (misaz)
František Boháček:

Dnes jsem tu aplikaci ještě vyzkoušel, dal jsem převádět MB na MB, zadal jsem 1000 a vypsalo to 1000.. Nechápu, kde je u tebe chyba, zkoušel jsem to jak ve VS, tak i přímo exe soubor v staženém řešení..

 
Nahoru Odpovědět  -1 8.7.2015 10:02
Avatar
Odpovídá na František Boháček
Michal Žůrek (misaz):

dělá to za nějakých okolností, už si nevzpomínám za jakých, ani jsme ti za to nestrhl všechny body, ale jen pár.

Nahoru Odpovědět  +1 8.7.2015 10:25
Nesnáším {}, proto se jim vyhýbám.
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 56 zpráv z 56.