Umas das dificuldades dos iniciantes na plataforma SPOJ é entender os resultados
de erros mostrados pelo SPOJ.
Por exemplo, o que significa um erro em tempo de execução (NZEC). NZEC significa Non Zero Exit Code. Na linguagem C, esse erro será gerado se sua função main não tem o return 0. Em outras linguagens, este erro pode ser gerado se uma exceção é gerada.
Listas dos sinais emitidos pelo Spoj:
http://en.wikipedia.org/wiki/Unix_signal#POSIX_signals
Os erros mais comuns encontrados nas submissões do spoj (pelo menos em C):
SIGSEGV (signal 11)
Esse sinal é emitido quando um programa faz uma referência à memória inválida ou quando ocorre uma falha de segmentação.
A falha de segmentação pode ocorrer quando fazemos:
-Um desreferenciamento de um ponteiro NULL.
-Um acesso de memória não existente ou sem permissão.
-Uso de ponteiro não inicializado.
int main(){
int * p = NULL;
int a = *p; //desreferenciamento de ponteiro NULO
}
Nos problemas do SPOJ, geralmente, esse problema ocorre quando acessamos uma posição do vetor fora do intervalo definido.
SIGFPE (signal 8)
Esse sinal é emitido quando o programa executa uma operação aritmética errônea, como por exemplo, divisão por zero.
SIGXFSZ (signal 25)
Esse sinal é emitido quando o programa imprime o arquivo de saída maior do que tamanho maxímo permitido.
Geralmente, esse sinal é emitido quando o programador esquece de retirar os "printfs".
SIGABRT (signal 6)
Esse sinal é lançado quando seu programa faz uma chamada de sistema abort(). Por exemplo, memória alocada insuficiente.
Tutorial para usuários do SPOJ
http://www.spoj.pl/tutorials/USERS/
2 comentários:
Por isso que parei de tentar o spoj pois não sabia desse sinais. Valeu Wladimir.
E quando na questão, na entrada de dados, diz EOF, o que significa isso?
Postar um comentário