sketchup 2017 withh crack | 6.2 | Prison Tycoon 4 : SuperMax (PC)

Ugrás a tartalomhoz

Fotó

Nagy számok kezelése StringekkelElső Saját Unitom :)


  • Hozzászólás írásához be kell jelentkezni!
8 válasz erre a témára

#1
NemBen

NemBen

    Citromdí­jas

  • Törzstag
  • PipaPipaPipa
  • 0
  • 250 Hozzászólás
  • 1 köszönet
  • Offline
  • Neme:Férfi
  • Lakhely:Magyarország, Szekszárd
Hétvégén írtam egy unitot amivel LONGINTnél nagyobb (nemnegyatív, egész) számokat lehet kezelni.
Lehet tanulmányzni és ötleteket adni a továbbfejlesztéshez wink.gif
Jelenlegi verzó: 1.0

unit nsz;

interface

function add(s,t:string):string; {=s+t}
function kiv(s,t:string):string; {=s-t}
function oszt(s,t:string):string; {=s div t}
function mar(s,t:string):string; {=s mod t}
function szor(s,t:string):string; {=s*t}
function hatv(s,t:string):string; {=s**t}




implementation

function add(s,t:string):string;
var a,b,c,d,e,f,g,i,j,k:integer;
var u,v:string;

begin
a:=0;
b:=0;
c:=0;
d:=0;
e:=0;
f:=0;
g:=0;
i:=0;
j:=0;
k:=0;
u:='';
v:='';
i:=length(s);
j:=length(t);
if i>=j then
begin
for a:=i downto 1 do
begin
val(s[a],c,d);
val(t[a-(i-j)],e,f);
g:=c+e+k;
if g>9 then
begin
k:=1;
g:=g-10;
end
else k:=0;
str(g,v);
insert(v,u,1);
end;
end
else
begin
for a:=j downto 1 do
begin
val(s[a-(j-i)],c,d);
val(t[a],e,f);
g:=c+e+k;
if g>9 then
begin
k:=1;
g:=g-10;
end
else k:=0;
str(g,v);
insert(v,u,1);
end;
end;
if k>0 then insert('1',u,1);
add:=u;
end;

function kiv(s,t:string):string;
var a,b,c,d,e,f,g,i,j,k:integer;
var u,v:string;

begin
a:=0;
b:=0;
c:=0;
d:=0;
e:=0;
f:=0;
g:=0;
i:=0;
j:=0;
k:=0;
u:='';
v:='';
i:=length(s);
j:=length(t);
if i>=j then
begin
for a:=i downto 1 do
begin
val(s[a],c,d);
val(t[a-(i-j)],e,f);
g:=c-e-k;
if g<0 then
begin
k:=1;
g:=g+10;
end
else k:=0;
str(g,v);
insert(v,u,1);
end;
end
else
begin
for a:=j downto 1 do
begin
val(s[a-(j-i)],c,d);
val(t[a],e,f);
g:=c-e-k;
if g<0 then
begin
k:=1;
g:=g+10;
end
else k:=0;
str(g,v);
insert(v,u,1);
end;
end;
repeat
if u[1]='0' then delete(u,1,1);
until (u[1]<>'0') or (u='');
if u='' then u:='0';
kiv:=u;
end;

function mar(s,t:string):string;
var c,d,e,f,i,j:integer;
begin
if length(s) If length(s)=length(t) then
begin
for i:=1 to length(s) do
begin
val(s[i],c,d);
val(t[i],e,f);
if c begin
mar:=s;
j:=0;
break;
end
else j:=1;
end;
end;
if j=1 then mar:=kiv(s,szor(oszt(s,t),t));
end;

function szor(s,t:string):string;
var w,x:string;

begin
w:='0';
x:='0';
if length(s)>length(t) then
begin
repeat
w:=add(s,w);
x:=add(x,'1');
until x=t;
end
else
begin
repeat
w:=add(t,w);
x:=add(x,'1');
until x=s;
end;
szor:=w;
end;

function oszt(s,t:string):string;
var x,y:string;
var c,d,e,f,i,j:integer;

begin
x:='0';
if length(s) If length(s)=length(t) then
begin
for i:=1 to length(s) do
begin
val(s[i],c,d);
val(t[i],e,f);
if c begin
j:=1;
break;
end
else j:=0;
end;
end;
if length(s)>length(t) then j:=0;
if j=0 then
begin
repeat
s:=kiv(s,t);
x:=add(x,'1');
If length(s)=length(t) then
begin
for i:=1 to length(s) do
begin
val(s[i],c,d);
val(t[i],e,f);
if c begin
j:=1;
break;
end
else j:=0;
end;
end;
until (length(s) end;
oszt:=x;
end;

function hatv(s,t:string):string;
var y,z:string;

begin
y:='1';
z:='0';
repeat
y:=szor(s,y);
z:=add(z,'1');
until z=t;
hatv:=y;
end;

end.

Csatolt fájl:

  • Csatolt fájl  NSZ.zip   871 byte   8 Letöltések:

  • 0

Megköszönte 1 felhasználó:
Patacsi

#2
Markeee

Markeee

    "Fordítva vetted be a gyógyszered?"

  • Kitiltott
  • PipaPipaPipaPipaPipaPipaPipaPipaPipa
  • 0
  • 3287 Hozzászólás
  • 0 köszönet
  • Offline
  • Neme:Férfi
Jó lehet, de nem tudom értelmezni a kódot, mert mindent egymás alá írtál sad.gif Később ezt javítsd és akkor olvashatóbb a kódod és mások is megértik. smile.gif Egyébként szerintem jó smile.gif
  • 0

#3
NemBen

NemBen

    Citromdí­jas

  • Törzstag
  • PipaPipaPipa
  • 0
  • 250 Hozzászólás
  • 1 köszönet
  • Offline
  • Neme:Férfi
  • Lakhely:Magyarország, Szekszárd
Najo.. elkezdtem optmalizálni valamennyire a kódot.. biggrin.gif
Ja igenm itt azért nem olvasható redesen mert idézetbe írtam és nem kódba)

Az új összeadás:

Kérlek Jelentkezz be vagy Regisztrálj hogy lásd a rejtett tartalmat.


  • 0

#4
Markeee

Markeee

    "Fordítva vetted be a gyógyszered?"

  • Kitiltott
  • PipaPipaPipaPipaPipaPipaPipaPipaPipa
  • 0
  • 3287 Hozzászólás
  • 0 köszönet
  • Offline
  • Neme:Férfi
Így már azért láthatóbb smile.gif
Délután megnézem, hátha tanulok tőled valamit smile.gif
  • 0

#5
wer003

wer003

    Zsebibaba

  • Törzstag
  • PipaPipa
  • 0
  • 38 Hozzászólás
  • 0 köszönet
  • Offline
  • Neme:Férfi
Üdv!

Volna egy kérésem. Hallotam a "Barátságos számok"-ról. Azt mondják hogy ha ezt megcsinákljuk pascal-ba akkor a gép telejesen belassul, mert ő is lassan tudja kiszámolni.
Valaki megtudja csinálni?
  • 0

#6
NemBen

NemBen

    Citromdí­jas

  • Törzstag
  • PipaPipaPipa
  • 0
  • 250 Hozzászólás
  • 1 köszönet
  • Offline
  • Neme:Férfi
  • Lakhely:Magyarország, Szekszárd
Van barátságos számokra is programom. Majd felteszem azt is. smile.gif
De az nagy számokra tényleg nagyon lassú.
Ezt a unitot szerintem nem érdemes hozzá használni, mivel valószínűleg csak lassítaná...
  • 0

#7
Maister007

Maister007

    Pelenkás

  • Felhasználó
  • Pipa
  • 0
  • 9 Hozzászólás
  • 0 köszönet
  • Offline
Én is csinálok most hasonló programit amihez kell a nagy szám csak én magam nak csináltam a programba ojat ami kezeli és nem unite és mellékesen 2 a 200 milliomodik hatványra is emeli de ez még csak az alap lessz az több isxDxD de ha már itt tartok ha írok egy programot mindegy hogy milyen ha van mondjuk egy integer változó benne és valaki nagyobb számot ad meg mint az amennyit bír akkor ugye kilép a program. nincs valami megoldás rá ijen rendesz szintű parancs vagy valami hogy ne zárjun be hanem írja ki hogy nagy és kérdeztessem újra vagy alami? mint a fájl kezelésnél a {$I} vagy mi amivel ugye meg lehet vizsgálni hogy van e hiba a fájl beolvasásánál tehát létezik e vagy nem.
  • 0

#8
chiefa

chiefa

    Lézengő

  • Veterán
  • PipaPipa
  • 20
  • 88 Hozzászólás
  • 28 köszönet
  • Offline
  • Neme:Férfi

Kérlek Jelentkezz be vagy Regisztrálj hogy lásd a rejtett tartalmat.

Nézz körül a try except környékén
  • 0

#9
jedlikp

jedlikp

    Pelenkás

  • Felhasználó
  • Pipa
  • 0
  • 5 Hozzászólás
  • 0 köszönet
  • Offline
  • Neme:Férfi
  • Lakhely:Praga

Hello

ha a maximalis szamhoz ami (32 bit) integernel   32767, hozza adsz +1 akkor

tulcsordul es maxilmalis  negativ szam jon ki  ami -32768.

 

Ez alap beilittasnal nem okoz futasi hibat;

 

Be lehet allitani hogy okkozzon:

 

deplhi 10-re

Project -> Options -> DElphi Compiler -> Compiling -> Runtime errors -> Overflow Checking    -> true;

oregeb delphire   Project -> Options -> Compiler ->  Overflow Checking

 

Ebben az estben futas kozben hibakiiras jon letre.

 

Ha a programba akarja kezelni akkor jo a

Kérlek Jelentkezz be vagy Regisztrálj hogy lásd a rejtett tartalmat.


  • 0




0 felhasználó olvassa ezt a témát.

0 felhasználó, 0 vendég, 0 anonim felhasználó