Requisito previo : introducción
a PL/SQL En el código PL/SQL, los grupos de comandos se organizan dentro de un bloque. Un grupo de bloques relacionado con declaraciones o sentencias. En declare part, declaramos variables y entre start y end part, realizamos las operaciones.
Dado un número y un rango, la tarea es mostrar todos los números cuya suma de dígitos sea igual al número dado.
Ejemplos:
Entrada: x = 23
Salida: 599 689 698 779 788 797 869 878 887 896 959 968 977 986 995
(Nota: rango->1 a 999)Entrada: x=12
Salida: 39 48 57 66 75 84 93
(Nota: rango->1 a 100)
El enfoque es tomar un número, encontrar todos los números posibles en el rango dado y sumar todos los dígitos del número y, si la suma de los dígitos es igual al número, luego imprimir ese número.
A continuación su implementación:
--Take a number --sum all digit of the number --if sum digit is 25 --then display all --Declaration block DECLARE --declare N variable n NUMBER; --declare B variable m NUMBER; --declare S variable --S initialize with 0 s NUMBER := 0; BEGIN --Code block --loop run until max 999 to min 1 FOR i IN 1..999 LOOP n := i; WHILE n > 0 LOOP --logic of digit sum m := MOD(n, 10); s := s + m; n := Trunc(n / 10); END LOOP; IF s = 25 THEN --digit sum to be same with 25 --Display in result dbms_output.Put_line(i ||' '); END IF; s := 0; END LOOP; --end loop END; --end program
Producción:
799 889 898 979 988 997