Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.11.08
Prihlásený: 07.11.08
Príspevky: 1
Témy: 1
Príspevok NapísalOffline : 07.11.2008 10:58

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 ).


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 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).


Offline

Užívateľ
Užívateľ
Faktorial - pretečenie

Registrovaný: 21.04.07
Prihlásený: 02.05.11
Príspevky: 204
Témy: 26
Príspevok NapísalOffline : 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
Offline

Užívateľ
Užívateľ
Faktorial - pretečenie

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 08.11.2008 0:59

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ď
Offline

Užívateľ
Užívateľ
Faktorial - pretečenie

Registrovaný: 19.09.06
Prihlásený: 21.04.24
Príspevky: 749
Témy: 31
Bydlisko: Ružomberok&...
Príspevok NapísalOffline : 08.11.2008 11:18

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


Offline

Užívateľ
Užívateľ
Faktorial - pretečenie

Registrovaný: 16.02.08
Prihlásený: 08.12.10
Príspevky: 235
Témy: 13
Príspevok NapísalOffline : 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 :-D

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 :-D


Offline

Užívateľ
Užívateľ
Faktorial - pretečenie

Registrovaný: 16.02.08
Prihlásený: 08.12.10
Príspevky: 235
Témy: 13
Príspevok NapísalOffline : 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.
Odpovedať na tému [ Príspevkov: 7 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. i8080 pretečenie akumulátora - problém

v Assembler, C, C++, Pascal, Java

0

246

12.04.2013 2:23

AM-JP Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pretečenie countera v C (Wiring)

v Assembler, C, C++, Pascal, Java

5

409

15.08.2017 8:01

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Faktorial

v Assembler, C, C++, Pascal, Java

4

550

07.04.2015 16:35

leafycircle Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Faktorial

v Benchmarky a diagnostické programy

1

941

14.08.2007 0:21

Spirit Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Faktorial C++

v Assembler, C, C++, Pascal, Java

5

4738

16.01.2010 18:02

johny3212 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Faktorial - Pascal

v Assembler, C, C++, Pascal, Java

9

1675

28.09.2009 8:10

pizet Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Faktorial v c++

v Assembler, C, C++, Pascal, Java

10

1831

02.06.2009 22:44

ado21 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [Pascal] Faktorial - zdrojak - surne

v Assembler, C, C++, Pascal, Java

2

6029

20.05.2008 18:02

Axwell Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra