IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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

Člen
Avatar
:19.12.2019 9:14

Ahoj prosím o pomoc.

Vytvářím generátor náhodných čísel rozsah zadává programátor.
Počet generovaných čísel zadává uživatel.
Generátor vypíše vygenerovaná čísla v zadaném počtu.
vypíše nejmenší vygenerované číslo
vypíše nejvetšejší vygenerované číslo
vypíše průměrnou hodnotu vygenerovaných čísel.

Ano mam to do školy a nejsem programátor a ani se nasmažím být.
Neřeším validaci html kódu celý zdroják přenesu do jiné stránky, kde jsou i jiné části jako generování grafu, accordion a jiné.

Jenže nevím jak dál jak projít vygenerované čísla zjistit Max a min hodnotu a udělat průměr.

Děkuji za pomoc (nejsem již nejmladší 43 let)
Něco už mam splácáno, ale nevím jak vypsat poslední uvedené věci děkuji.

Zkusil jsem:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <form name="random">
            <p><label for="kolik">Počet genrovaných čísel: </label><input name="kolik" value="5"></p>
            <p><textarea name="vystup" cols="50" rows="7"></textarea>
            <p><input type="button" value="Generuj!" onclick="generuj(document.random);"></p>
        </form>

        <script>
            function generuj(form) {
                form.vystup.value = "";
                for(var a = 0,
                        b = Number(form.kolik.value) || 0;
                        a !== b; a++) form.vystup.value += Math.floor(Math.random() * 100) + 1 + "\; ";
            };
        </script>
    </body>
</html>

Chci docílit: Potřebuji aby v text v area na dalších řádcích vypsalo:
Nejmenší vygenerované číslo:
Nevetší vygenerované číslo:
Průměrná hodnota vygenerovaných čísel:

Editováno 19.12.2019 9:16
 
Odpovědět
19.12.2019 9:14
Avatar
Verquido
Tvůrce
Avatar
Odpovídá na
Verquido:19.12.2019 22:51

Jdi na to přes pole :-)

let cisla = [], sum = 0;
for(let a = 0, b = Number(form.kolik.value) || 0; a !== b; a++) {
  cisla[a] = Math.floor(Math.random() * 100) + 1
  sum += cisla[a]
  form.vystup.value += cisla[a] + "\; "
}

form.vystup.value += '\n' + Math.max(...cisla)
form.vystup.value += '\n' + Math.min(...cisla)
form.vystup.value += '\n' + (sum / cisla.length)

Šlo by to určitě udělat lépe, ale vzhledem k tvému příkladu je tento přístup nejlepší.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
19.12.2019 22:51
Avatar

Člen
Avatar
:19.12.2019 23:02

Děkuji za pomoc přes pole jsem se o to snažil ale nedařilo se mi tam dostat počet generovaných čísel.

Jen mám problém co mam teď volat ve funkci onclick="gene­ruj(document.ran­dom);

 
Nahoru Odpovědět
19.12.2019 23:02
Avatar

Člen
Avatar
:19.12.2019 23:08

Děkuji za řešení ano je to funkční a moc mi to pomohlo. Jen se zeptám na dotaz jak ošetřím aby po stisku tlačítka genruj došlo ke smazání původních hodnot a vypsaly se nové.

 
Nahoru Odpovědět
19.12.2019 23:08
Avatar

Člen
Avatar
:19.12.2019 23:42

Ještě jednou děkuji a pro lidi jako já dávám cele řešení s tím, že průměr zaokrouhluji na dvě desetinná čísla pomocí "toFixed(2)"

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <form name="random">
            <p><label for="kolik">Počet genrovaných čísel: </label><input name="kolik" value="5"></p>
            <p><textarea name="vystup" cols="50" rows="7"></textarea>
            <p><input type="button" value="Generuj!" onclick="generuj(document.random);"></p>
        </form>

        <script>
            function generuj(form) {
                let cisla = [], sum = 0;
                form.vystup.value = "" + "Vygenerované čísla: ";
            for(let a = 0, b = Number(form.kolik.value) || 0; a !== b; a++) {
            cisla[a] = Math.floor(Math.random() * 100) + 1
            sum += cisla[a]
            form.vystup.value += cisla[a] + "\; "
            }

            form.vystup.value += '\n' + "Největší vygenerované číslo: " + Math.max(...cisla)
            form.vystup.value += '\n' + "Nejmenší vygenerované číslo: " + Math.min(...cisla)
            form.vystup.value += '\n' + "Průměr vygenerovaných čísel: " + (sum / cisla.length).toFixed(2) + "\n";
            };
    </script>


        </script>
    </body>
</html>

Určitě jak už uvedl Verquido, který mi pomohl, lze nalézt i jiné řešení.

 
Nahoru Odpovědět
19.12.2019 23:42
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 5 zpráv z 5.