این برنامه -.+.*./ را برای اعداد بزرگ پیاده میکنه.
[PHP]program mat;
var
x,y,st: string[150];
n: integer;
function sum(a,b: string): string;
var
s,s1: string[150];
la,lb,l,i: integer;
a1,b1,e,c: integer;
sum1: array [0..150] of integer;
begin
c:=0;
la:=length(a);
lb:=length(b);
s:='';
if la>lb then
begin
l:=la-lb;
for i:=1 to l do
s:=concat(s,'0');
b:=concat(s,b);
end;
s:='';
if la<lb then
begin
l:=lb-la;
for i:=1 to l do
s:=concat(s,'0');
a:=concat(s,a);
end;
l:=length(a);
for i:=l downto 1 do
begin
val(a[i],a1,e);
val(b[i],b1,e);
if c=1 then
sum1[i]:=a1+b1+1
else
sum1[i]:=a1+b1;
c:=sum1[i] div 10;
sum1[i]:=sum1[i] mod 10;
end;
sum1[0]:=c;
s:='';
c:=0;
while sum1[c]=0 do
c:=c+1;
for i:=c to l do
begin
str(sum1[i],s1);
s:=concat(s,s1);
end;
if s='' then
s:='0';
sum:=s;
end;
function sub(a,b: string): string;
var
s,s1,temp: string[150];
la,lb,l,i,flag: integer;
a1,b1,e,c: integer;
sum1: array [0..150] of integer;
begin
c:=0;
la:=length(a);
lb:=length(b);
s:='';
if la>lb then
begin
l:=la-lb;
for i:=1 to l do
s:=concat(s,'0');
b:=concat(s,b);
end;
s:='';
if la<lb then
begin
l:=lb-la;
for i:=1 to l do
s:=concat(s,'0');
a:=concat(s,a);
end;
if a<b then
begin
flag:=1;
temp:=a;
a:=b;
b:=temp;
end
else
flag:=0;
c:=0;
for i:=la downto 1 do
begin
val(a[i],a1,e);
val(b[i],b1,e);
a1:=a1+c;
if a1<b1 then
begin
a1:=a1+10;
c:=-1;
end
else
c:=0;
sum1[i]:=a1-b1;
end;
if flag=1 then
s:='-';
c:=1;
while sum1[c]=0 do
c:=c+1;
for i:=c to la do
begin
str(sum1[i],s1);
s:=concat(s,s1);
end;
if s='' then
s:='0';
sub:=s;
end;
function mult(a,b: string): string;
var
s,s1,sum1: string[150];
c,h,i,j,k,e: integer;
a1,b1,la,lb,m1: integer;
m:array[0..150] of integer;
begin
la:=length(a);
lb:=length(b);
c:=0;
val(b[lb],b1,e);
for i:=la downto 1 do
begin
val(a[i],a1,e);
m1:=b1*a1+c;
m[i]:=m1 mod 10;
c:=m1 div 10;
end;
m[0]:=c;
c:=0;
s:='';
for k:=0 to la do
begin
str(m[k],s1);
s:=concat(s,s1);
end;
sum1:=s;
h:=1;
for i:=lb-1 downto 1 do
begin
val(b[i],b1,e);
for j:=la downto 1 do
begin
val(a[j],a1,e);
m1:=b1*a1+c;
m[j]:=m1 mod 10;
c:=m1 div 10;
end;
m[0]:=c;
c:=0;
s:='';
for k:=0 to la do
begin
str(m[k],s1);
s:=concat(s,s1);
end;
for k:=1 to h do
s:=concat(s,'0');
sum1:=sum(sum1,s);
h:=h+1;
end;
if sum1='' then
sum1:='0';
mult:=sum1;
end;
function divid(a,b: string): string;
var
c,s,s1: string[150];
a1,b1,la,lb,lc,l,i: integer;
begin
la:=length(a);
lb:=length(b);
s:='';
if la>lb then
begin
l:=la-lb;
for i:=1 to l do
s:=concat(s,'0');
b:=concat(s,b);
end;
s:='';
if la<lb then
begin
l:=lb-la;
for i:=1 to l do
s:=concat(s,'0');
a:=concat(s,a);
end;
if b>a then
begin
divid:='*** ERROR ***';
exit;
end;
lc:=la-lb-1;
s1:='';
for i:=1 to lc do
s1:=concat(s1,'9');
c:=mult(b,s1);
while a>=c do
begin
s1:=sum(s1,'1');
c:=sum(b,c);
la:=length(a);
lc:=length(c);
s:='';
if la>lc then
begin
l:=la-lc;
for i:=1 to l do
s:=concat(s,'0');
c:=concat(s,c);
end;
s:='';
if la<lc then
begin
l:=lc-la;
for i:=1 to l do
s:=concat(s,'0');
a:=concat(s,a);
end;
end;
s1:=sub(s1,'1');
c:=mult(b,s1);
c:=sub(a,c);
if c='' then
c:='0';
divid:='A = B * '+s1+' + '+c;
end;
begin
writeln('***************************************** ');
writeln('please select oparation:');
writeln('1. SUM');
writeln('2. SUB');
writeln('3. MULT');
writeln('4. DIVID');
write('select: ');
readln(n);
if (n>4) or (n<1) then
exit;
writeln('----------------------');
write('please enter A: ');
readln(x);
write('please enter B: ');
readln(y);
writeln(' ');
write('ANSWER: ');
if n=1 then
write(sum(x,y))
else if n=2 then
write(sub(x,y))
else if n=3 then
write(mult(x,y))
else if n=4 then
write(divid(x,y));
readln(x);
end.
[/PHP]