Autor Zpráva
Networker
Profil
Ahoj,
mohli byste mi prosím Vás napsat jeden script v JS?

V odkazu posílám obrázek toho, co by mělo být napsané.
fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xfa1/v/t1.0-9/10380737_391507971002583_7198369904522447462_n.jpg?oh=969c1533a9bd75915a21c40d3d9641b8&oe=548BDBA2&__gda__=1421795732_3a3ca9989378573a88224e87eb2b630e

Pro zkušeného je to práce na minutku :-)
Děkuji mockrát
mimochodec
Profil
Pro zkušeného to je mnohem rychlejší, protože ti obratem řekne, že tohle nemá s JS vůbec co dělat. Zkus si otevřít nějaký word a tam najít editor rovnic nebo jak se to jmenovalo.


aha, teď si říkám, že to možná nechceš javascriptem zobrazovat, ale počítat. Pak ano. Ukaž, cos vytvořil a nějak se to udělá.
Networker
Profil
Ano, počítat a zobrazovat výsledky. Nemusí to být se vstupama, stačí mi napsat vzorec výpočtu v JS a udělat výpis ...
Zatím jsem nic nevymyslel, jak na to :-(
Děkuji moc za výsledek :-)
Joker
Profil
Networker:
Děkuji moc za výsledek :-)
Přibližně 1,10517? :-)

Samotný výpočet je opravdu poměrně triviální.
Máme tam sumu, což je v programování for-cyklus. Uvnitř je zlomek, dělení taky v JavaScriptu máme. V čitateli je mocnina, na mocnění v JS taky existuje funkce. A ve jmenovateli je faktoriál, ten si už pravda musíme napsat sami, ale je to v programování oblíbený začátečnický příklad a návodů jsou všude kupy.

Dále když se nad problémem trochu zamyslíme, vlastně ani mocnění a faktoriál nepotřebujeme.
Pokud K v každém cyklu roste o 1, tak hodnota čitatele (0,1^K) je vždycky čitatel z předchozího cyklu dělený 10 a hodnota jmenovatele (K!) je jmenovatel z předchozího cyklu vynásobený K.
Čili když první cyklus vypočíváme rovnou: citatel = 1; jmenovatel = 1; vysledek = 1 a cylus začneme s K=1 a v každém cyklu jen citatel vydělíme 10, jmenovatel vynásobíme K a k výsledku přičteme (citatel/jmenovatel).

Takže nakonec je potřeba jen jeden for-cyklus a aritmetické operátory.
Alphard
Profil
V reakci na snahu řešit to v C++ po neúspěchu v JS Vyzná se tu někdo v C++? - Pomoc s doděláním dodávám raději řešení v JS. Úpravu navrženou Jokerem nehávám stranou, asi to tak bude lepší.

<script>
// http://natashatherobot.com/factorials-javascript-recursion/
var factorial = function(n) {
    if(n <= 1) { // tuhle podmínku jsem upravil oproti zdroji, ale pořád neřeším float vstupy
        return 1
    } else {
        product = 1;
        for(i = 1; i <= n; i++) {
            product *= i;
        }
        return product;
    }
}

var result = 0;
for (var k = 0; k <= 20; k++)
{
    result += Math.pow(0.1, k)/factorial(k);
}
document.write(result);
</script>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: