| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 07.11.08 Prihlásený: 07.11.08 Príspevky: 1 Témy: 1 |
Zdravim. Robím na jednom fyzikálnom programe a potrebujem v ňom vypočítať faktoriál veľkých čísiel, napr. faktorial čísla 50. Spravil som si na to takúto funkciu :
function Faktorial( N : integer ) : longInt;
begin
if N > 1 then
Faktorial := N * Faktorial( N - 1 )
else
Faktorial := 1;
end;
Môj problém je nasledovný : ak sa pokúsim vypočítať faktoriál čísla 17, funkcia vráti zápornú hodnotu, čo je nezmysel. Je mi jasné že problém je v pretečení. Avšak najväčší ordinálny typ v Pascale je longInt. Jeho rozsah však zjavne nedokáže pokryť moje potreby. Čo mám roiť ? Ešte by som mal uviesť že program píšem v pascale ( program je určený pre DOS ).
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 07.11.2008 19:28 | |
|
Budeš musieť použiť pole bajtov (prípadne možno nájdeš knižnicu, ktorá je určená na počítanie s veľkými číslami).
|
|
Registrovaný: 21.04.07 Prihlásený: 02.05.11 Príspevky: 204 Témy: 26 | Napísal xgamer: 07.11.2008 19:50 | |
|
pascal má aj dátový typ int64 čo je teoreticky obor čísiel 2^64 lenže najväčšie musí byť 61 viac my neprešlo
_________________ ------------------------------------------------------------------------------------------------------------------------------------
FSC Esprimo Mobile M9400
CPU:T5450(2x1.66GHz) GPU:X3100 RAM:4 GiB HDD:120GB + 500GB ext. WD OS:Windows 7 Pro 64bit LCD:LG W2253TQ
Keyboard & mouse:Logitech Cordless Desktop EX 110 |
|
Registrovaný: 09.09.07 Prihlásený: 07.11.16 Príspevky: 3114 Témy: 233 Bydlisko: Nové Zámky |
nechcem trepnut kravinu, ale ak dobre viem, viac ako 69faktorial sa vyratat neda..
_________________ "It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď |
|
Registrovaný: 19.09.06 Prihlásený: 21.04.24 Príspevky: 749 Témy: 31 Bydlisko: Ružomberok&... |
preco by sa nedal? Skus pouzit windows kalkulacku.
a k veci, myslim ze ak by si pouzil datovy typ extended, co je asi najvacsi rozsahom v pascale,tak by nemal byt problem, je sice s desatinnou ciarkou, ale pri faktoriale to nevadi.
A musis povolit numericky koprocesor {N+} a aj N musi byt extended
|
|
Registrovaný: 16.02.08 Prihlásený: 08.12.10 Príspevky: 235 Témy: 13 | Napísal ado21: 09.11.2008 15:40 | |
|
Ako fyzik by si mal vediet, ze 50! je brutal velke cislo
odbocka: docent na prednaska u nas hovoril, ze jeden vulgarny kolega sa ho spytal na kurevske velke cislo. A jeho napadlo e^55
spat k teme. tie faktorialy som spravil cez stringy. Sice trabalo vlastnu aritmetniku, ale nic zlozite ani dlhe... Teda cez stringy to v pohode ide... Aj ked v Pascale ma string iba 255 znakov, co by mohol byt trochu problem, ale da sa pouzit pole znakov.
Na programovanie s velkymi cislami sa pouziva Mapple sa mi vidi...
Blackshadow: trepla si kravinu
odbocka2: U nas na prednaske. 1000! je sice velmi velke cislo, ale oproti nekonecnu je to stale nic
|
|
Registrovaný: 16.02.08 Prihlásený: 08.12.10 Príspevky: 235 Témy: 13 | Napísal ado21: 09.11.2008 15:45 | |
|
Hej, a som zabudol, rekurzi sa vyhybajte ak sa da. Pouzit rekurziu na faktorial je nezmysel...
Ale nie je ju zas budete zatracovat. Hanojske veze alebo backtrack bez rekurzie je samovrazda...
Ale sa jej da rozumne vyhnut, tak sa vyhnite.
_________________ Učet je neaktívny. |
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| i8080 pretečenie akumulátora - problém v Assembler, C, C++, Pascal, Java | 0 | 246 | 12.04.2013 2:23 AM-JP | | Pretečenie countera v C (Wiring) v Assembler, C, C++, Pascal, Java | 5 | 409 | 15.08.2017 8:01 BX | | Faktorial v Assembler, C, C++, Pascal, Java | 4 | 550 | 07.04.2015 16:35 leafycircle | | Faktorial v Benchmarky a diagnostické programy | 1 | 941 | 14.08.2007 0:21 Spirit | | Faktorial C++ v Assembler, C, C++, Pascal, Java | 5 | 4738 | 16.01.2010 18:02 johny3212 | | Faktorial - Pascal v Assembler, C, C++, Pascal, Java | 9 | 1675 | 28.09.2009 8:10 pizet | | Faktorial v c++ v Assembler, C, C++, Pascal, Java | 10 | 1831 | 02.06.2009 22:44 ado21 | | [Pascal] Faktorial - zdrojak - surne v Assembler, C, C++, Pascal, Java | 2 | 6029 | 20.05.2008 18:02 Axwell |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|