[ Divjak @ 26.12.2004. 19:21 ] @
Code:

program bug;
var i,f:integer;
begin
  f:=1;
  for i:=1 to 10 do begin
  f:=f*i
  write (f,' ');
end;
end.


kada ovo pokrenem rezultat je:
Code:

1 2 6 24 120 720 5040 -25216 -30336 24320


zasto se ovo desava?
hvala
[ reiser @ 26.12.2004. 21:43 ] @
Zato sto je maximalna vrednost koju f moze da ima = 32762, pa kad se ta vrednost prekoraci, pocinje se otpocetka, tj. od -32762. To je zbog toga sto si f deklarisao kao integer. Stavi da je f tipa LongInt ili Int64 (nisam siguran da li ovo postoji u pascalu).

poz
[ bancika @ 26.12.2004. 23:18 ] @
LongInt postoji, a int64 ne
ako ti trebaju bas veliki brojevi (10> cifara) mozes da niz predstavis kao niz cifara (array [1..1000] of byte) pa da radis rucno mnozenje i ostale operacije. malo je teze tako ali...
[ morlic @ 27.12.2004. 08:54 ] @
Kako ne postoji Int64? Koji ti Delphi koristis? Evo sta kaze Borland:

Citat:

Code:

Type    Range    Format
Shortint    -128..127    signed 8-bit
Smallint    -32768..32767    signed 16-bit
Longint    -2147483648..2147483647    signed 32-bit
Int64    -2^63..2^63-1    signed 64-bit
Byte    0..255    unsigned 8-bit
Word    0..65535    unsigned 16-bit
Longword    0..4294967295    unsigned 32-bit

[ sasas @ 27.12.2004. 09:07 ] @
@morlic

obrati paznju na prvi post:

var i,f:integer;

sudeci po tome covek koristi neki stariji pascal (ima problema sa integerom koji je sirok 16 bita).

ss.
[ morlic @ 27.12.2004. 15:36 ] @
E pa stvarno...TP je izgleda neunistiv :)

@bancika: izvinjavam se zbog izletanja, skroz sam prevideo da covek radi u TP-u, pa sam odlucio da te opametim, kad ono... :)