Se solicita Busco experto en Bases de datos

Estado

🔒 Este tema está cerrado para nuevas respuestas.

⏰ Solo el creador del tema puede solicitar la reapertura de sus propios temas, pero únicamente dentro de los 60 días previos a la última actualización.

jamc8181 Seguir

Beta
Social Media
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
12 Jul 2013
Mensajes
105
Porcentaje - 90%
9   1   0
Se trataría de resolver unos ejercicios parecidos a estos el lunes que viene por la mañana.

Serían tres o cuatro parecidos a estos. Adjunto las soluciones.


1. Crea un función que devuelva un 1 ó 0 si un número es divisible por otro.
2. Crea un procedimiento que muestre los divisores de un número dado.
3. Un número perfecto es un número natural que es igual a la suma de sus divisores propios
positivos, sin incluirse él mismo. Crea un procedimiento que encuentre los números
perfectos menores que un número dado.
4. Dos números amigos son dos números enteros positivos a y b tales que a sea la suma de los
divisores propios de b, y b sea la suma de los divisores propios de a. Crea una función que
encuentre dos números amigos menores de 500.
5. Crea un procedimiento que calcule y muestre los n primeros términos de la sucesión de
Fibonacci.
La sucesión de Fibonacci queda definida por la ecuación:
fn = fn-1 + fn-2
donde
f0 = 0
f1 = 1
6. Crea una función que calcule el factorial de un número de forma recursiva.
Se puede definir el factorial de la siguiente forma:
n! = n*(n-1)!
0!=1
Soluciones


1.-
create or replace
function es_divisible (num1 number, num2 number)
return number
IS
N number;
BEGIN
IF MOD(NUM1,NUM2)=0 THEN
N:=1;
ELSE
N:=0;
END IF;
return n;
end;
2.-
3.-
create or replace
PROCEDURE divisores (n in number)
AS
i number;
BEGIN
FOR I IN 1 .. N-1 LOOP
if es_divisible(n,i)=1 then
DBMS_OUTPUT.PUT_LINE(TO_CHAR(I));
END IF;
end loop;
END;
create or replace
PROCEDURE numerosperfectos (n in number)
AS
I number;
J NUMBER;
s number;
BEGIN
FOR J IN 6 .. N LOOP
s:=0;
FOR I IN 1 .. J-1 LOOP
IF ES_DIVISIBLE(J,I)=1 THEN
s:=s+i;
END IF;
END LOOP;
IF S=J THEN
DBMS_OUTPUT.PUT_LINE(TO_CHAR(S));
END IF;
end loop;
END;
4.-
5.-
create or replace
PROCEDURE numerosamigos (n in number)
AS
I number;
J NUMBER;
K NUMBER;
r number;
s number;
BEGIN
FOR J IN 6 .. N LOOP
s:=0;
FOR I IN 1 .. J-1 LOOP
IF ES_DIVISIBLE(J,I)=1 THEN
s:=s+i;
END IF;
END LOOP;
r:=0;
FOR K IN 1 .. S-1 LOOP
IF ES_DIVISIBLE(S,K)=1 THEN
R:=R+K;
END IF;
END LOOP;
IF R=J and j<>s THEN
DBMS_OUTPUT.PUT_LINE(TO_CHAR(J)||' y '||TO_CHAR(S)||' son amigos');
END IF;
end loop;
END;
create or replace
PROCEDURE fibonacci (n in number)
AS
I NUMBER;
F0 NUMBER;
F1 NUMBER;
x number;
BEGIN
F0:=0;
F1:=1;
FOR I IN 2 .. N LOOP
X:=F0+F1;
F0:=F1;
f1:=X;
DBMS_OUTPUT.PUT_LINE('Término '||TO_CHAR(I)||': '||to_char(x));
END LOOP;
END;
6.-
create or replace
function fact (num number)
return number
IS
BEGIN
IF NUM<2 THEN
return 1;
ELSE
return num*fact(num-1);
END IF;
end;
 
Estado

🔒 Este tema está cerrado para nuevas respuestas.

⏰ Solo el creador del tema puede solicitar la reapertura de sus propios temas, pero únicamente dentro de los 60 días previos a la última actualización.

Arriba