Autor | Zpráva | ||
---|---|---|---|
Richie21 Profil * |
#1 · Zasláno: 21. 12. 2012, 10:56:46
Zdravím, potřeboval bych poradit jak zjednodušit kód generátoru jedniček a nul. Není to z moji hlavy, zkoušel jsem to pochopit, ale nechapu :-) . Díky předem za radu
pocet=300; odc=0; doc=1; gen() function gen(){ cisla=new Array(); x=0; pl=true; while(x<pocet){ cisla[x]=(Math.floor(Math.random()*(doc-odc+1)))+odc; if(pl!=false) x++; pl=true; } for(z=0;z<pocet;z++){ document.getElementById("vypis").innerHTML+=cisla[z]; posledni=pocet-1; if(z!=posledni) document.getElementById("vypis").innerHTML+=" " } } function refresh(){ odc=document.hodnoty.odc.value; doc=document.hodnoty.doc.value; pocet=document.hodnoty.pocet.value; odc=eval(odc); doc=eval(doc); pocet=eval(pocet); document.getElementById("vypis").innerHTML=""; cisla=new Array(); rozdil=doc-odc+1 if(pocet<=rozdil||document.hodnoty.opakovani.checked==true) gen() } |
||
Joker Profil |
#2 · Zasláno: 21. 12. 2012, 11:44:25
Richie21:
Tak v první řadě tenhle kód nemůže ani fungovat, jsou tam syntaktické chyby, na spoustě řádků chybějí středníky, na řádku 4 se používá funkce, která ještě není definovaná. Dál jsou tam chyby v návrhu, masivně se využívají globální proměnné, jejichž hodnoty se ještě navíc dotahují z různých míst, funkce gen() dělá dvě nesouvisející věci v jedné funkci a používá se tam eval, ještě navíc nějakým úplně divným způsobem. Tipnu si, že jde o hodně svérázné řešení převodu řetězce na číslo. Proměnná pl nemá vůbec žádný smysl. Celkově kvalita kódu měřeno podle „WTF na řádek“ dost bídná. Pokud jde jen o to nagenerovat určitý počet nul a jedniček (ta funkce gen() umí generovat obecněji od nějakého čísla do nějakého čísla), ta generující funkce by mohla vypadat takhle: function gen(pocet) { var cisla = new Array(); var hodnota; for(var i=0; i<pocet; i++) { hodnota = (Math.random() < 0.5) ? 0 : 1; cisla.push(hodnota); } return cisla; } Pokud to má být generátor nul a jedniček, hodnoty doc a odc jsou zbytečné (resp. napevno 1 a 0). Včetně toho výpisu by to bylo takhle: var pocet = 300; var cisla = gen(pocet); document.getElementById("vypis").innerHTML = cisla.join(" "); |
||
Richie21 Profil * |
#3 · Zasláno: 21. 12. 2012, 13:06:18
Díky moc za rychlou odpověď.
Uz to funguje jak ma :-) . Predtim to fungovalo taky, ale nikdo nevedel jak? Joker: „Celkově kvalita kódu měřeno podle ‚WTF na řádek‘ dost bídná.“ :D skvely postreh, tez jsem dost nadaval... |
||
_es Profil |
Joker:
„na řádku 4 se používá funkce, která ještě není definovaná“ To ale nie je chyba, v čase behu skriptu funkcia už existuje. |
||
Chamurappi Profil |
#5 · Zasláno: 21. 12. 2012, 17:03:45
Reaguji na Jokera:
„jsou tam syntaktické chyby, na spoustě řádků chybějí středníky“ Chybějící středník na konci řádku nemusí být nutně syntaktická chyba. Dost často není. |
||
Časová prodleva: 11 let
|
0