Professional Documents
Culture Documents
interface
uses
System.SysUtils,math;
type
numero = class
private
valor : cardinal;
Function ALiteral2D( N : Byte):String;
Function ALiteral3D ( N :Word) : String;
Function ALiteral4D ( N :Word) : String;
public
function ObtValor:cardinal;
procedure CambValor(n:cardinal);
procedure Imvertir;
function EsPrimo:Boolean;
function ElimDig(dg: byte):Cardinal;
procedure ElimDigPr;
procedure IntDig(p1,p2:byte);
function ObtDig(p:byte):byte;
procedure ModfDig(p:byte; d:byte);
procedure InsDig(p:byte;d:byte);
function NuMYor(d:byte):cardinal;
function NuMNenor(d:byte):cardinal;
function ND:byte;
procedure EliminarCero;
function Dig_May_nd(nd:byte):Integer;
Procedure EliminarP ( p: Byte);
function sonIguales(n:integer):Boolean;
Function getValue:Cardinal; //get significa obtener,devolver
Procedure setValue(v: Cardinal);
Function isPar:Boolean;
Procedure delDig(p: Byte);
Function toBinary:string;
function smDigPares:boolean;
Procedure InsertarDigito ( X :Byte; P: Byte);
Procedure delDigit( p:Byte);
Function FormaPartedelNumero (x : Byte): Boolean;
Procedure DelNum ( x: Cardinal );
Function SumaDigPar:Boolean;
function ObNumDig(p,nd:byte):Cardinal;
function EncUnDig(d:byte):Boolean;
Function ObtenerValor : Cardinal;
Procedure CambiarValor( V : Cardinal);
Procedure EliminarDigito ( d: Byte);
Function ALiteral (n:Word): String;
Function ABinario : String;
function SmDig:cardinal;
function BusqDg(d:byte):Boolean;
function N_Dig:byte;
procedure ElimD_Primos;
procedure InsertarD(p,d: byte);
procedure IncD_En_Posicion(p,d:byte);
function El_numero_Mayor(d:cardinal):cardinal;
function Cantidad_de_Numeros:cardinal;
function CantDeCeros:byte;
function Condicion(z:Cardinal):Boolean;
procedure Unir2num( num:numero);
end;
implementation
{ numero }
procedure numero.CambValor(n:cardinal);
begin
valor:= n;
end;
function numero.CantDeCeros: byte;
var
n1,n2,n3:Cardinal;
d1,e,c:byte;
begin
c:=0;
e:=10;
n1:=valor;
while ( n1 > 0) do
begin
d1:= n1 mod 10;
if ( d1 <> 0) then
begin
e:=10;
n2:=n1;
n3 := n2 mod 1000;
if (Condicion(n3)) then
begin
c:=c+1;
e:=100;
end;
end;
n1:= n1 div e;
end;
Result:= c ;
end;
function numero.El_numero_Mayor(d:cardinal):cardinal;
var n,r1,f,r2:cardinal;
begin
f:= Cantidad_de_Numeros;
if (d > f) then
begin
n:= valor;
r1:= n mod (Trunc(Power(10,d)));
while n>0 do
begin
r2:= n mod (Trunc(Power(10,d)));
if (r1>r2) then
else
begin
r1:= r2;
r2:=0;
end;
n:=n div 10;
end;
Result:=r1;
end
Else raise Exception.Create('numero de digito que sobre pasa:');
end;
procedure numero.IncD_En_Posicion(p, d: byte);
var n:cardinal;
begin
end;
function numero.obtValor:Cardinal;
begin
Result:= valor;
end;
function Numero.BusqDg(d: byte): Boolean;
var
n:cardinal;
dg:byte;
b:Boolean;
begin
dg:=0;
n:=valor;
b:=false;
while (n>0)and(b=false) do
begin
dg:=n mod 10;
if (d=dg) then
b:=true;
n:=n div 10;
end;
Result:=b;
end;
begin
n:=valor;
cd:=0;
while (n>0) do
begin
n:=n div 10;
cd:=cd+1;
end;
Result:=cd;
end;
Result:= ALiteral2D(n)
else
if( n <= 999 ) then
Result:=ALiteral3D(n)
else Result:=ALiteral4D(n);
end;
('' ,'Diez','Veinti','Treinta','Cuarenta','Cincuenta','Sesenta','Setenta','Ochenta
','Noventa','' ,'' ,'' ,'' ,'' ,'' ) );
begin
if ( N <= 15 ) then
Result:=Dig[1,N]
else Result:=Dig[2,N div 10]+' y '+Dig[1,N mod 10];
end;
End;
end;
Begin
S:=Aux*q+s;
N:=N Div k;
Q:=Trunc(Power(10,(Nd-1)));
Nd:=Nd+1;
End
Else
N:=N Div K;
End;
Valor:=S
end;
end;
End;
Result:= Sw;
end;
end;
begin
m:= valor * Trunc(Power(10,num.ND))+ num.valor;
valor:= m ;
end;
begin
n:= valor;
while n > 0 do
Begin
d:=n mod 10;
suma :=suma + d;
Result:=v;
end;
begin
n:=valor;
k:=Trunc(Power(10,nd));
dm:= n mod k;
//n:=n div 10;
while (n>0) do
begin
d:=n mod k;
if (d > dm) then
dm:=d;
n:=n div 10;
end;
Result:=dm;
end;
begin
n:=valor;
d:=0;
nn:=0;
e:=0;
while (n>0) do
Begin
d:= n mod 10;
if (dg <> d) then
begin
nn:= nn + (d* Trunc(power(10,e)));
e:=e+1;
end;
n:=n div 10;
End;
Result:=nn;
end;
procedure numero.ElimDigPr;
Var
n,r,k : Cardinal;
d: byte;
begin
n:=Valor;
r:=0;
k:=1;
while n>0 do
Begin
d:= n mod 10;
if d in [0,1,4,6,8,9] then
begin
r:=d*k+r;
k:=k*10;
end;
n:=n div 10;
End;
Valor:=r;
end;
procedure numero.EliminarCero;
var n:cardinal;
d,k,c:byte;
begin
n:=Valor;
c:=0;
while (n>0) do
begin
d:=n mod 10; n:=n div 10; c:=c+1;
if (d <> 0) then
begin
d:= n mod 10; n:=n div 10; c:=c+1; k:=c;
if (d=0) then
begin
d:= n mod 10; n:=n div 10; c:=c+1;
if (d<>0) then
begin
EliminarP(k);
n:=valor;
c:=0;
end;
end;
end;
end;
end;
end;
procedure numero.Imvertir;
var nn,n:Integer;
d:byte;
begin
n:=valor;
d:=0;
nn:=0;
while ( n > 0 ) do
begin
d:= n mod 10;
nn:= nn * 10 + d;
n:= n div 10;
end;
valor:=nn;
end;
end;
end;
end
else raise Exception.Create('Nmero de Digito Que sobrepasa lo
numeros de digitod');
end
else raise Exception.Create('Numero de Digito No valido');;
Result:= r1;
end;
begin
n1:=n;
n2:=valor;
b1:=True;
while (n1>0)and (b1 = true) do
Begin
d1:=n1 mod 10;
n22:=n2;
b1:=False;
while (n22>0)and (b1 = False) do
begin
d2:= n22 mod 10;
if (d1 = d2) then
b1:=True;
n22:=n22 div 10;
end;
n1:=n1 div 10;
End;
n1:=valor;
n2:=n;
b2:=True;
while (n1>0)and (b2 = true) do
Begin
d1:=n1 mod 10;
n22:=n2;
b2:=False;
while (n22>0)and (b2 = False) do
begin
d2:= n22 mod 10;
if (d1 = d2) then
b2:=True;
n22:=n22 div 10;
end;
n1:=n1 div 10;
End;
if (b2 = b1) then
Result:=True
else Result:=False;
end;
end.