Base de datos
UNIVERSIDAD NACIONAL DE TRUJILLO
Base de datos
EJERCICIOSFUNCIONES ESCALARES1. LISTA DE NMEROS CAPICAS
Implemente un procedimiento para Mostrar la lista de los primeros
10 nmeros capicas.
FORMA 1: SIN RECURSIVIDAD
--Encontrar los numeros capicuas use mastergoif
OBJECT_ID('dbo.fnNumCapicua', 'FN') is not null drop function
dbo.fnNumCapicuago--Esta funcion nos devolvera el numero en el caso
cumpla la condicion o nadacreate function dbo.fnNumCapicua(@n int)
returns varchar(3)ASBegin declare @Result varchar(3)='' if (
dbo.fnNumInvertido(@n,0)=@n ) set @Result=CAST(@n as char(3))
return @Result
End--Fin funcin
use mastergoif OBJECT_ID('dbo.fnMostrarCapicua', 'FN') is not
null drop function dbo.fnMostrarCapicuago--Esta funcion nos
devolvera la lista de numeros capicuascreate function
dbo.fnMostrarCapicua(@inicio int) returns varchar(2000)ASBegin
declare @Result varchar(2000) = '' declare @Veces int = 0
while( @Veces < 10 )
Begin
if(dbo.fnNumCapicua(@inicio)!='')
Begin
set @Veces +=1
set @Result += dbo.fnNumCapicua(@inicio)+ char(13)
End
else
set @Result += dbo.fnNumCapicua(@inicio)
set @inicio += 1
End return @Result
End--Fin funcion--Prueba de la funcion
print dbo.fnMostrarCapicua(100)
FORMA 2: Usando recursividad pero ahora se enva un rango donde
encontrar los capicas. use mastergo-- verificamos si la funcion que
vamos a crear existeif OBJECT_ID('dbo.fnNumInvertido', 'N') is not
null drop function dbo.fnNumInvertidogo-- creamos la funcion
fnNumInvertidocreate function dbo.fnNumInvertido(@n int, @inv
int)returns int
AS
Begin
declare @contrario int
if @n=0
set @contrario=@inv
else
set @contrario=dbo.fnNumInvertido(@n/10, @n%10+@inv*10)
return @contrario
End
--Funcin para Verificar si un nmero es Capicause mastergoif
OBJECT_ID('dbo.fnCapicuas', 'FN') is not null drop function
dbo.fnCapicuasgo--Esta funcion nos devolvera la lista de numeros
capicuascreate function dbo.fnCapicuas(@inicio int, @fin int)
returns varchar(2000)ASBegin
declare @Result varchar(2000)=''
declare @cad varchar(2000)=''
if(@inicio = @fin+1)
set @Result = @cad
else
Begin
if(dbo.fnNumInvertido(@inicio,0)=@inicio)
set @cad += cast (@inicio as varchar(3)) + CHAR(13)
+dbo.fnCapicuas(@inicio+1,@fin)
else
set @cad += dbo.fnCapicuas(@inicio+1,@fin)
End
return @CadEnd--Fin funcion--Prueba de la funcin 120 y 140 es el
rango para buscar los nmeros capicuas
print dbo.fnCapicuas(120,140)
2. NMEROS AMIGOS Dos nmeros son amigos cuando la suma de los
divisores de uno de ellos es igual al otro y viceversa.Implemente
un proceso para determinar si dos nmeros ingresados por teclado son
amigos.FORMA 1: SIN RECURSIVIDAD--funcion que retorna el divisoruse
mastergoif OBJECT_ID('dbo.fnDivisores', 'FN') is not null drop
function dbo.fnDivisoresgocreate function dbo.fnDivisores(@n
int,@div int) returns intASBegin declare @Numero int = 0
if @n%@div=0
set @Numero=@div return @Numero
End--funcion que retorna la suma de divisoresuse mastergoif
OBJECT_ID('dbo.fnSumDivisor', 'FN') is not null drop function
dbo.fnSumDivisorgocreate function dbo.fnSumDivisor(@n int,@div int)
returns intASBegin declare @Suma int = 0
while(@div