2010-07-22 3 views
4

Erlang에 코드를 작성했습니다. 컴퓨터에서 정답을 얻습니다. 하지만 SPOJ에 제출하면 NZEC (종료 코드가 아닌 값) 오류가 발생합니다. 나는 halt()init:stop()과 같은 내장 함수를 사용했으며, 그 사양은 0이 아닌 종료 코드 오류를 피하기 위해 사용된다는 것을 분명히 말해줍니다. 하지만 여전히 같은 오류가 발생합니다. 이 문제를 어떻게 해결할 수 있습니까?SPLJ의 Erlang에서 NZEC 오류를 피하십시오.

편집 코멘트에 의해 필요에 따라 코드 :

-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 (계승). -export ([main/0]). main() -> {ok, [No_of_cases]} = io : fread ("", "~ d"), 루프 (No_of_cases). 루프 (0) -> % init : stop(); 정지 (1); {ok, [Number]} = io : fread (""~ d "), ResultFactorial = find_factorial (Number, 1), io : format ("~ p ~ n " , [ResultFactorial]), 루프 (No_of_cases-1). find_factorial (0, Product) -> 제품; find_factorial (Number, Product) -> find_factorial (Number-1, Product * Number)입니다. 이 코드는 팩토리얼을 찾는 데 사용됩니다. 내 컴퓨터에서 잘 실행되지만 spoj가 0이 아닌 종료 코드 오류를 내고 있습니다. – niting112

답변

4

나는 대답을 얻었다. 트릭은 모듈 이름이 항상 tested이어야하며 엔트리 포인트는 메인이어야합니다. 예를 들어, 컴파일 한 후에는 테스트를 거쳐야합니다 : main().

+0

2017 년부터 Erlang 모듈 이름은'prog'이어야합니다. –