2010-07-22 3 views
4

Я написал код в Erlang, и я получил правильный ответ на своей машине. Но когда я отправляю его на SPOJ, он дает ошибку NZEC (не нулевой код выхода). Я использовал встроенные функции, такие как halt() и init:stop(), и их спецификация четко говорит, что они используются для предотвращения ненулевой ошибки кода выхода. Но все же я получаю ту же ошибку. Как я могу решить эту проблему?Избегайте ошибки NZEC в Erlang в SPOJ

EDIT код в соответствии с требованиями комментарий:

-module(factorial). 
-export([main/0]). 

main() -> 
    {ok, [No_of_cases]} = io:fread("", "~d"), 
    loop(No_of_cases). 

loop(0) -> 
%init:stop(); 
halt(1); 
loop(No_of_cases) -> 
    {ok, [Number]} = io:fread("", "~d"), 
    ResultFactorial = find_factorial(Number,1), 
    io:format("~p~n",[ResultFactorial]), 
    loop(No_of_cases-1). 

find_factorial(0,Product) -> 
    Product; 
find_factorial(Number,Product) -> 
    find_factorial(Number-1,Product*Number). 
+0

Возможно, если бы вы могли немного поработать над своим кодом или хотя бы сообщить об ошибке, вам было бы легче помочь вам ... –

+0

-module (factorial). -экспорт ([основной/0]). main() -> {ok, [No_of_cases]} = io: fread ("", "~ d"), loop (No_of_cases). loop (0) -> % init: stop(); halt (1); loop (No_of_cases) -> {ok, [Number]} = io: fread ("", "~ d"), ResultFactorial = find_factorial (Number, 1), io: format ("~ p ~ n" , [ResultFactorial]), loop (No_of_cases-1). find_factorial (0, продукт) -> Продукт; find_factorial (Number, Product) -> find_factorial (Number-1, Product * Number). Этот код предназначен для поиска factorial.Running хорошо на моей машине, но в spoj дает ненулевой код ошибки выхода – niting112

ответ

4

я получил ответ. Фокус в том, что имя вашего модуля всегда должно быть tested, а точкой входа должна быть функция основная. Например, после компиляции он должен быть запущен как : main().

+0

Обратите внимание, что с 2017 года имя модуля Erlang должно быть 'prog'. –

Смежные вопросы