GOOGLE ADS

martes, 19 de abril de 2022

¿Cómo obtener un nombre completo de la entrada del usuario en SWI-Prolog y mostrarlo como salida?

Soy nuevo en SWI-Prolog y sigo aprendiendo. Estoy creando un programa simple para solicitar el nombre completo del usuario y mostrar el resultado. Sin embargo, he tenido problemas para obtener un nombre completo de la entrada del usuario junto con espacios entre el nombre, el segundo nombre y el apellido de una sola entrada. Cuando trato de mostrar una salida que es solo el primer nombre, la salida es solo un código.

Esto es lo que escribí hasta ahora:

name:-nl,
write('Write your full name: '),read(FName),
write(FName).

Aquí está la entrada y la salida.
Prolog_Name_Program

Esta es la salida que quiero.

?- name.
Write your full name: First Middle Last.
First Middle Last
true.


Solución del problema

El objetivo read(X)lee el siguiente término del flujo de entrada actual y lo unifica con X. Para que el predicado lea correctamente un nombre completo, debe escribir ese nombre entre comillas simples y terminar la entrada con un punto. Por ejemplo:

?- name.
Write your full name: 'First Middle Last'.
First Middle Last
true.

También puede usar el predicado read_line_to_string/2, en cuyo caso no se deben escribir las comillas ni el período:

name:-
nl,
write('Write your full name: '),
read_line_to_string(user_input, FName),
write(FName).

Ejemplo:

?- name.
Write your full name: First Niddle Last
First Niddle Last
true.

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...