Quick actions

cmd+k|ctrl+k

Navigation

Languages

suma

Snippet info

Language

Mercury

Visibility

public

Author

apariciosimon

Created

2024-06-18T19:17:58.881099Z

Updated

2024-06-18T19:22:53.772383Z

% Definición del módulo
:- module main.

% Declaración de la interfaz
:- interface.

% Importar el módulo io en la interfaz
:- import_module io.
% Declaración del predicado suma
:- pred suma(int::in, int::in, int::out) is det.

% Declaración del predicado main
:- pred main(io::di, io::uo) is det.

% Sección de implementación
:- implementation.

% Importar los módulos necesarios
:- import_module int.
:- import_module string.
:- import_module list.

% Implementación del predicado suma/3
suma(X, Y, Resultado) :-
    Resultado = X + Y.

% Implementación del predicado main/2
main(!IO) :-
    io.read_line_as_string(Result1, !IO),
    (
        Result1 = ok(Line1),
        ( string.to_int(string.strip(Line1), X) ->
            io.read_line_as_string(Result2, !IO),
            (
                Result2 = ok(Line2),
                ( string.to_int(string.strip(Line2), Y) ->
                    suma(X, Y, Resultado),
                    io.format("La suma de %d y %d es %d\n", [i(X), i(Y), i(Resultado)], !IO)
                ;
                    io.write_string("Error: El segundo valor ingresado no es un número válido.\n", !IO)
                )
            ;
                Result2 = eof,
                io.write_string("Error: Fin de entrada inesperado al leer el segundo número.\n", !IO)
            ;
                Result2 = error(Error),
                io.format("Error al leer el segundo número: %s\n", [s(io.error_message(Error))], !IO)
            )
        ;
            io.write_string("Error: El primer valor ingresado no es un número válido.\n", !IO)
        )
    ;
        Result1 = eof,
        io.write_string("Error: Fin de entrada inesperado al leer el primer número.\n", !IO)
    ;
        Result1 = error(Error),
        io.format("Error al leer el primer número: %s\n", [s(io.error_message(Error))], !IO)
    ).
INFO