Date post: | 16-Sep-2015 |
Category: |
Documents |
Upload: | jorge-gonzales-castillo |
View: | 45 times |
Download: | 9 times |
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