IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – Faktoriál

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Tomas
Nevyplnené
Avatar
Tomas:29.1.2012 15:36

Ahoj, nechci byt neprijemny nebo rypavy, ale jste si jisty, ze tento program dokaze vypocitat faktorial 30? Vzdyt takove cislo se ani nevleze do rozsahu normálního intu. Nejvíc co se vlezlo bylo číslo 20 do rozsahu ulongu...Takže faktoriál 30 dle vašeho programu je špatný.

 
Odpovedať
29.1.2012 15:36
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na
David Hartinger:29.1.2012 16:26

Ahoj, zde se jedná o algoritmus (ne o program). Prakticky s ním lze vypočítat faktoriál čehokoli, když mu dáte dostatek času a paměti a jsou knihovny umožňující práci s velkými čísly. Ale máte pravdu, bude rozumnější hranici v ukázce snížit.

Odpovedať
29.1.2012 16:26
New kid back on the block with a R.I.P
Avatar
jan.vencl
Tvůrce
Avatar
jan.vencl:24.9.2012 10:32

Ahoj, programuju ve volném čase "pokročilou" tedy zatím normální vědeckou kalkulačku a řešil jsem časovou náročnost programu. A dostal jsem nápad, který se hodí tedy jen pro konkrétní případ, ale podělím se o něj, aby se ušetřila náročnost. navrhneme databázovou tabulku s dvěma sloupci id a hodnota id je zároveň faktoriál a sloupec hodnota je text, který má obsah hodnoty faktoriálu
např id="4" hodnota="24" atd. databaze je naplněna programem který počítá hodnotu násobení pod sebou jako ve škole v páté třídě a pracuje sní jako s textem, klient pak jen zadá faktoriál 6 a program nepočítá ale jen vybírá z databáze.

 
Odpovedať
24.9.2012 10:32
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na jan.vencl
David Hartinger:24.9.2012 14:30

Jo, faktoriál je určitě funkce, jejíž hodnoty jdou dost dobře cachovat :) Problém spíš vidím v obrovském rozsahu čísel, používáš pro to nějaké speciální knihovny?

Koukal jsem na toho kosa (BlackBird) a moc se mi to líbilo, jen to vypisuje hodně warningů o používání zastaralých funkcí, takže mi to nevypočítalo složitější příklady. Běží mi tu PHP 5.3, už je 5.4. Asi by stálo za to se na to podívat. Běží ti to někde, že bych si to pořádně vyzkoušel? :)

Odpovedať
24.9.2012 14:30
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovedá na jan.vencl
Kit:24.9.2012 15:49

Touto technikou (zmíněnou tabulkou) se dělá například dělení konstanta/proměnná u některých úloh, ale myslím si, že pro faktoriál se to moc nehodí.

S dlouhými čísly dobře počítá Python:

def fakt(x):
   if(x<0): raise Exception("Argument je zaporny")
   if(x<=1): return 1
   return x*fakt(x-1)

print fakt(30)
.. 265252859812191058636308480000000
Odpovedať
24.9.2012 15:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
jan.vencl
Tvůrce
Avatar
Odpovedá na David Hartinger
jan.vencl:25.9.2012 8:59

Hele dělám to jen co se týče zábavy, zatím testuju u sebe nikde na netu to neni, já nemám moc velké zkušenosti a uvědomuju si že tam je spoustu chyb,ted se chystám to udělat nějak lepší ale nevím jestli v C nebo zvolit Javu ale Javu skoro vůbec neumim spíš se jí chci naučit tak na tom bych to zkusil, s programování dělám asi 9 měsíců :D ale ty matematické úlohy mě baví.
Chci tam ještě přidat možnost definovat vlastní proměné a řešení rovnic

 
Odpovedať
25.9.2012 8:59
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na jan.vencl
David Hartinger:25.9.2012 9:35

Ono to nebude těžké opravit, stačí si stáhnout nové PHP a zapnout warningy. Hlavně tam bylo používání funkcí eregi, ty už se nepoužívají, nahradily je preg, měly by se ale volat stejně, jen jiný název :)

Odpovedať
25.9.2012 9:35
New kid back on the block with a R.I.P
Avatar
jan.vencl
Tvůrce
Avatar
Odpovedá na David Hartinger
jan.vencl:25.9.2012 9:56

Děkuji moc za rady, warningy zapnu v PHP.ini? a tvůj názor sdraco je to lepší dělat v C a volat tu aplikaci pak pomocí exec() aby to slo na webu nebo to mit komplet v PHP ?

 
Odpovedať
25.9.2012 9:56
Avatar
Kit
Tvůrce
Avatar
Odpovedá na jan.vencl
Kit:25.9.2012 14:05

Dynamicky to nastavíš
http://php.net/…eporting.php

Jinak se to dá napevno nastavit v php.ini direktivou error_reporting. Při spouštění přes CLI tam mám hlášení všech chyb (dobré na ladění a testy), přes Apache to mám nastaveno na standard. Na produkčním serveru se to redukuje, aby to neobtěžovalo klienty.

Odpovedať
25.9.2012 14:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Kit
David Hartinger:25.9.2012 14:07

Hlavně se to redukuje z důvodu bezpečnosti, nikdo nemusí znát strukturu naší aplikace :)

Odpovedať
25.9.2012 14:07
New kid back on the block with a R.I.P
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!