Está en la página 1de 5

% 1.

(elevar a una potencia)

elevar:-write('Programa para elevar a una potencia '),


write('Valor base: '),
read(B),nl,
write('Valor exponente: '),
read(E),nl,
C is B^E,
format('El resultado es: ~w',[C]).

% 2.(Multiplicar dos valores)


multi:-
write('Ingrese un número para multiplicar: '),read(N1),nl,
write('Ingrese otro número para multiplicar: '),read(N2),nl,
D is N1*N2,nl,
format('El resultado es: ~w',[D]).

% 3.(Factorial de un numero)
facto(0,1).
facto(1,1).
facto(N,F):- N>0,
N1 is N-1,
facto(N1,F1),
F is N*F1.

facto1:-tab(10),write('Programa para sacar el factorial de un valor\n'),


tab(10),write('valor: '),
read(N),nl,
facto(N,F),
tab(10),format('el resultado es:~w\n\n',[F]).

% 4.(Máximo común divisor):

% 5.(Número perfectos):
% 6.(factorialInverso):
facti :-
write('Ingrese un número para calcular su factorial inverso: '),
read(Numero), nl,
calcularFactorialInverso(Numero, Resultado),
format('El factorial inverso de ~w es ~w', [Numero, Resultado]), nl.
calcularFactorialInverso(Numero, Resultado) :-
factorial(Numero, Factorial),
Resultado is 1 / Factorial.
factorial(0, 1).
factorial(N, Resultado) :-
N > 0,
N1 is N - 1,
factorial(N1, SubResultado),
Resultado is N * SubResultado.

% 7. (maximoDosNumeros):

max :-
write('Ingrese el primer número: '),
read(Num1),
write('Ingrese el segundo número: '),
read(Num2), nl,
maximo(Num1, Num2, Maximo),
format('El numero máximo de ~w y ~w es ~w', [Num1, Num2, Maximo]), nl.
maximo(X, Y, X) :- X >= Y.
maximo(X, Y, Y) :- X < Y.

% 8. (Cant. de elementos repetidos en una lista):


cant:- write('Ingrese una lista de elementos separados por comas: '),
read_line_to_codes(user_input, Input),
atom_codes(Atom, Input),
atomic_list_concat(Lista, ',', Atom),
contar_elementos_repetidos(Lista, Repetidos),
write('Elementos repetidos en la lista y su cantidad de repeticiones: '),
write(Repetidos),
nl.
contar_elementos_repetidos(Lista, Repetidos) :-
setof((X, Num), (bagof(true, member(X, Lista), Ocurrencias), length(Ocurrencias, Num), Num
> 1), Repetidos).

% 9. (Serie fibonacchi):

fibo:- write('Hasta qué numero de la secuencia Fibonacci desea ver? '),


read(NF),
fibonacci(0, 1, NF).

fibonacci(_, _, 0).

fibonacci(A, B, NF) :-
write(A),
write(' '),
N1 is NF - 1,
C is A + B,
fibonacci(B, C, N1).

menú:
menu:-
write('M E N U P R I N C I P A L\n'),
write('1. Elevar a potencia'),nl,
write('2. Multiplicar dos valores'),nl,
write('3. Factorial de un numero'),nl,
write('4. Máximo común divisor'),nl,
write('5. Números perfectos'),nl,
write('6. Factorial inverso'),nl,
write('7. Máximo de dos números'),nl,
write('8. Cant. de elementos repetidos en una lista'),nl,
write('9. Serie de Fibonacci'),nl,
write('0. Finalizar'),nl,
write('Seleccione opcion: '), read(Opc),
ejecutar(Opc).

ejecutar(Opc):-
Opc==1, elevar, menu;
Opc==2, multi, menu;

Opc==6, facti, menu;


Opc==7, max, menu;
Opc==8, cant, menu;
Opc==9, fibo, menu;
Opc==0, true.

También podría gustarte