Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Richard Heřman:25.5.2016 14:39

Ahoj, dostal jsem zadání na pohovoru, viz přílohy. Moje otázka zní co bylo špatně? Jsem začínající programátor a nedává mi to logiku. Soubor vždy obsahuje zadání a moje řešení.
Vše dle mně funkční. Zdorjové kody u profilu: 1 - 3

 
Odpovědět
25.5.2016 14:39
Avatar
Odpovídá na Richard Heřman
Michael Škrášek:25.5.2016 16:48

To co jsem pochopil jsem se snažil opravit (tak jak bych to udělal já).

1. Vůbec ti nepřijde divný, že převádíš na string a potom zase na int (2x) ...

//return int.Parse(o.ToString());
return (int)o;

2. Na to se dá použít funkce Join

public string Concat(string[] lines)
{
    /*
    string result;
    for(int i = 0; i < lines.Length; i++)
    {
        result += lines[i];
    }
    return result;
    */
    return string.Join("", lines);
}
Nahoru Odpovědět
25.5.2016 16:48
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Michael Škrášek
Ondřej Štorc:25.5.2016 19:34

Ta dvojka by šla jeste vylepšit takto:

If(o is int) return (int)o;
return 0;

A vyhnes se tím try catchi.

Nahoru Odpovědět
25.5.2016 19:34
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Richard Heřman
Jan Vargovský:25.5.2016 20:26

1.
Neodpověděl jsi na druhou část otázky. Nechce se mi momentálně uvažovat jak je to s pravděpodobnostmi těch čísel.

2.
Měl napsat seznám problémů - napsal jsi tam problémy akorát u svého "zrefaktorovaného" kódu.
U concatu si nemůžu všimnou co jsi tam vůbec upravil. null + string je vždycky string. Ve skutečnosti po tobě chtěli asi optimalizaci na StringBuilder.

Michael Škrášek ten string.Join je overkill na tohle, když bys přičítal "" n-1 krát.

3.
Faktorial je na přirozených číslech, není potřeba používat jakékoliv FP. Nemáš ošetřené ani všechny vstupy.

Obecně se mi nelíbí vůbec tvůj styl jakým píšeš. Nedodržuješ konvence. Píšeš tam konstrukce, které jsou zbytečné. Chce to ještě pár stovek hodin něco naprogramovat, pak se můžeš podívat zpětně, jestli najdeš nějaké chyby.

Editováno 25.5.2016 20:27
 
Nahoru Odpovědět
25.5.2016 20:26
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:26.5.2016 19:01

3.
Nemáš ošetřená záporná čísla, ideálně by měla házet vyjímku
U faktoriálu není double ani int vhodný návratový typ. Double ne, protože vždy vrací přirozené číslo a int ne, protože může snadno dojít k přetečení. Lepší je použití BigInt.
pozn.: použití rekurze je v tomto případě docela elegantní řešení.

Nahoru Odpovědět
26.5.2016 19:01
the cake is a lie
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Petr Čech
Jan Vargovský:26.5.2016 23:30

Faktoriál rekurzí je elegantní možná tak při ukazování co to rekurze je.

 
Nahoru Odpovědět
26.5.2016 23:30
Avatar
Odpovídá na Jan Vargovský
Neaktivní uživatel:27.5.2016 0:49

Takže tazateli vzkazuješ, aby příště použil cyklus že ano?

Nahoru Odpovědět
27.5.2016 0:49
Neaktivní uživatelský účet
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Jan Vargovský:27.5.2016 6:38

Vždyť on ho použil, tak co mas za problem?

 
Nahoru Odpovědět
27.5.2016 6:38
Avatar
Odpovídá na Jan Vargovský
Neaktivní uživatel:29.5.2016 5:06

Problém? :-) To jsme se nepochopili, reagoval jsem na to jak jsi tvaroval svou odpověď, tedy, že rekurze se na faktoriál computaci nehodí... souhlasím, ale když si to přečte nějaký začátečník (jakože určitě přečte) jak bude vědět co tedy použít? No tak jsem to zmínil jako reakci ... teď už je to naprosto jasný každýmu kdo si to přečte... btw v C# neprogramuju, takže jsem jeho zdrojáky vůbec neviděl ... je to čistě algoritmický problém, takže mi to vůbec nevadí.

Jen jsem tím přišel o informaci, že OP cyklus použil, trochu to z předešlé konverzace vyznělo že použil rekurzi.

Takže žádný problém :-)

Nahoru Odpovědět
29.5.2016 5:06
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.