NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Cyklus na sečtení všech hodnot pole, 0 -> maximální hodnota

V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Ryouji
Člen
Avatar
Ryouji:13.6.2017 1:11

Dobrý den.

Potřeboval bych pomoci s jednodušším cyklem, který mi stále nedochází.

Mám pole, kde je sčítání[0] libovolné reálné číslo.
Potřebuji, aby se sčítání[0] sečetlo se sčítání[1] až do sčítání[maximální hodnota].

var velikost_sčítání = sčítání.length-1;

Napadlo mě vypsat všechny hodnoty, od nuly do maxima pomocí cyklu a potom je celé sečíst, ale vůbec se nemohu pohnout dál, protože cyklus je nejspíš špatný.

for i = 0; i >= velikost_sčítání; i++ {
        document.write(sčítání[0+i]);
}
 
Odpovědět
13.6.2017 1:11
Avatar
Ryouji
Člen
Avatar
Odpovídá na Ryouji
Ryouji:13.6.2017 1:21

Chybička se vloudila, má tam být:

i <= velikost_sčítání
 
Nahoru Odpovědět
13.6.2017 1:21
Avatar
Ryouji
Člen
Avatar
Odpovídá na Ryouji
Ryouji:13.6.2017 1:28

Tak já blbec měl chybu v jiném řádku a proto se to nezobrazilo.

var i = 0;
while (i <= velikost_sčítání) {
        document.getElementById("zkouška").value += sčítání[0+i];
        i++;
}

Tak poslední věc, kterou už asi nevyřeším, jak docílím součtu čísel, nikoli řetězců?

Zkoušel jsem number(), ale nic.

 
Nahoru Odpovědět
13.6.2017 1:28
Avatar
Odpovídá na Ryouji
Honza Prosecký:13.6.2017 17:14

Zkus parseInt

 
Nahoru Odpovědět
13.6.2017 17:14
Avatar
Odpovídá na Ryouji
Honza Prosecký:13.6.2017 17:20

Plus funkce reduce by ti mohla vyresit cyklus.

 
Nahoru Odpovědět
13.6.2017 17:20
Avatar
Ryouji
Člen
Avatar
Ryouji:14.6.2017 0:00
function výsledek() {
        if (document.getElementById("displej").value.indexOf("+") !== -1) {
                var sčítání = document.getElementById("displej").value.split("+");

                var velikost_sčítání = sčítání.length-1;
                var i = 0;
                while (i <= velikost_sčítání) {
                document.getElementById("výsledek_sčítací").value =(+document.getElementById("výsledek_sčítací").value) + (+sčítání[0+i]);
                            i++;
                        }
                }
        else if (document.getElementById("displej").value.indexOf("-") !== -1) {
                var odečítání = document.getElementById("displej").value.split("-");

                var velikost_odečítání = odečítání.length-1;
                var i = 0;
                while (i <= velikost_odečítání) {
                document.getElementById("výsledek_odečítací").value = (+document.getElementById("výsledek_odečítací").value) - (+odečítání[0+i]);
                            i++;
                        }
                }
        else if (document.getElementById("displej").value.indexOf("x") !== -1) {
                var násobení = document.getElementById("displej").value.split("x").join("*");

                var velikost_násobení = násobení.length-1;
                var i = 0;
                while (i <= velikost_násobení) {
                document.getElementById("výsledek_násobící").value = (+document.getElementById("výsledek_násobící").value) * (+násobení[0+i]);
                            i++;
                        }
                }
        else if (document.getElementById("displej").value.indexOf("÷") !== -1) {
                var dělení = document.getElementById("displej").value.split("÷").join("/");

                var velikost_dělení = dělení.length-1;
                var i = 0;
                while (i <= velikost_dělení) {
                document.getElementById("výsledek_dělící").value = (+document.getElementById("výsledek_dělící").value) / (+dělení[0+i]);
                            i++;
                        }
                }

        var výsledek_sčítací = document.getElementById("výsledek_sčítací");
        var výsledek_odečítací = document.getElementById("výsledek_odečítací");
        var výsledek_násobící = document.getElementById("výsledek_násobící");
        var výsledek_dělící = document.getElementById("výsledek_dělící");

        document.getElementById("displej").value = výsledek_sčítací.value + výsledek_odečítací.value + výsledek_násobícíl.value + výsledek_dělící.value;

        document.getElementById("paměť").value = document.getElementById("displej").value;
}

Tak nakonec to mám takto, ale stále mi to nefunguje, mohu poprosit o oznámení, kde je chyba?

 
Nahoru Odpovědět
14.6.2017 0:00
Avatar
Odpovídá na Ryouji
Marian Benčat:14.6.2017 10:23

Nemohu teď zkoumat kod, ale prvni vec, co není dobrej nápad, je používat v kodu diakritiku a je jedno, jestli je to jen ID elementu v DOMu.

Nahoru Odpovědět
14.6.2017 10:23
Totalitní admini..
Avatar
Odpovídá na Ryouji
Michal Šmahel:14.6.2017 13:58

Co přesně ti nefunguje??

A asi by se hodilo lépe popsat, co potřebuješ. Konkrétně rozvést vstup a očekávání od průběhu.

Nahoru Odpovědět
14.6.2017 13:58
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
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 8 zpráv z 8.