Autor Zpráva
Richie21
Profil *
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
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;
}
- to odpovídá první části té funkce gen v [#1].
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 *
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
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í.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0