Diskuze: Vyřešení úloh C#
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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);
}
Ta dvojka by šla jeste vylepšit takto:
If(o is int) return (int)o;
return 0;
A vyhnes se tím try catchi.
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.
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í.
Faktoriál rekurzí je elegantní možná tak při ukazování co to rekurze je.
Takže tazateli vzkazuješ, aby příště použil cyklus že ano?
Vždyť on ho použil, tak co mas za problem?
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
Zobrazeno 10 zpráv z 10.