Včera za mnou přišel bratr s tím, že podobný příklad měli v zápočtovce a nevěděl si s tím rady. V zadání bylo omezení, že mohou používat pouze matematické operace a funkci MOD. Nemohli využít pole ani nic podobného. Vstupem mohlo být libovolně dlouhé reálné číslo a měli udělat aritmetický součet (takže aby to odpovídalo zadání v tomto topicu kdy uživatel potřebuje provádět aritmetický součet dokud nedostane číslo mezi 0 a 9, přidal jsem pouze rekurzivní volání fuknce). Navíc v mém řešení se pracuje jen s číslama a ne se stringem, takže kdyby to číslo bylo jó dlouhý, mohlo by to být znát i na výkonu. Vymyslel jsem toto: Visual Basic:
Function SectiCisla(ByVal vstup As Integer) As Integer
Dim vystup As Integer
While vstup <> 0
vystup = vystup + (vstup Mod 10)
vstup = vstup \ 10
End While
If vystup > 9 Then Return SectiCisla(vystup)
Return vystup
End Function
C#
public int SectiCisla(int vstup)
{
int vystup = 0;
while (vstup != 0)
{
vystup = vystup + (vstup % 10);
vstup = vstup / 10;
}
if (vystup > 9) return SectiCisla(vystup);
return vystup;
}
Vzhledem k tomu že C# moc neovládám, použil jsem konvertor, tak doufám že syntaxe je ok. Asi si najdu víc podobných příkladů, je docela dobrý si takhle procvičit mozek. Kolikrát člověk z lenosti vymýšlí šílený konstrukce a přitom to často jde i celkem jednoduše :)
|