Durante o curso de Algoritmos e Programação de Computadores você irá passar por alguns problemas na hora de enviar a sua questão para o OJ (Online Judge).
Essa seção será resposável por aprensentar e exemplificar os erros mais comuns que voce provavelmente irá passar. Como não será o professor ou monitor que irá corrirgir a submissão de cada código de cada aluno, o sistema foi programado para corrigir e julgar seu código de acordo com apenas 1 critério : caso todos os inputs apresentados por ele retorne como resultado algo exatamente igual o seu gabarito (output), então o seu código está correto, caso contrário ele está errado.
Possivelmente os códigos que foram julgados como errados irão receber um dos seguintes erros que serão analisados no tópico seguinte
Sem a menor dúvida WA é o tipo de erro mais comum e TODOS ainda vão receber um durante o curso.
Este tipo de erro ocorre basicamente quando a resposta retornada não bate com o gabarito. Como por exemplo, caso o problema seja somar 2 números e para um input 5 5 seu programa retorna qualquer coisa diferente de 10 ele irá julgar seu programa com o veredito de resposta errada (WA).
Exemplo de programa que irá receber WA caso o proposto seja ler 2 números e imprimir ambos trocados
int x, y, aux;
scanf("%d %d", &x, &y);
aux = x;
x = y;
y = aux;
printf("%d%d\n", x, y);
Este tipo de programa irá retornar o veredito de WA pois caso o input seja 7 8, ao invés do código retornar 8 7 ele irá retornar 87 que não é a resposta correta
Este tipo de erro é bastante comum para o pessoal iniciante que está realizando submissões, principalmente, no site do URI.
O código recebe esse veredito quando sua resposta não está identada corretamente, ou seja, não apresenta a quebra de linha (\n) corretamente
Exemplo de programa que irá receber PE caso o proposto seja ler 1 número e imprimir 2 linhas, no qual a primeira é o número lido ao quadrado e na segunda linha o número ao cubo
int x;
scanf("%d", &x);
printf("%d %d\n", x*x, x*x*x);
Este tipo de programa irá retornar o veredito de PE pois caso o input seja 2 a saida deveria ser 2 linhas contendo os números 4 e 8, porém este código retorna apenas 1 linha1 com a resposta "correta", porém identada de forma incorreta.
Este tipo de erro é bastante comum para o pessoal iniciante, similar ao PE .
O código recebe esse veredito quando não consegue se compilado na hora do sistema realizar os testes.
Exemplo de programa que irá receber CE caso o proposto seja ler 1 número e imprimir seu dobro
int y;
scanf("%d", &x);
printf("%d\n", x*2);
Este tipo de programa irá retornar o veredito de CE o programa está salvando o valor lido na variável x, porém essa variável não foi declarada, logo irá ocorrer erro na hora da compilação.
Este tipo de erro é bastante comum e acontece bastante quando o programador está aprendendo vetores.
O código recebe esse veredito, na maioria das vezes, quando o programa acessa um posição inválida de memória, geralmente ocorre quando temos um vetor e se tenta acessar um index que não existe.
Exemplo de programa que irá receber RTE caso o proposto seja ler n números e imprimí-los de trás para frente.
int n,i;
scanf("%d", &n);
int v[n];
for(i = 0; i <= n; i++){
scanf("%d", &v[i]);
}
for(i = n; i >= 0; i--){
printf("%d ", v[i]);
}
printf("\n");
Este tipo de programa irá retornar o veredito de RE pois como o código cria um vetor de tamanho n, então suas posições vão de 0 ~ n-1 e como no laço de repetição está de 0 ~ n, na última iteração do primeiro for será acessado a posição v[n] que não existe, fazendo com que o programa não esteja correto.
Este também acontece, porém com uma menor frequência que os outros e está relacionado ao tempo de execução.
O código recebe esse veredito quando sua solução extrapola o tempo limite definido. Seu programa não terminou de executar no tempo pré-determinado, por isso foi interrompido. Este tipo de erro pode acontecer quando seu programa entra em um loop infinito ou a sua solução apenas demora muito para ser finalizada.
Exemplo de programa que irá receber TLE caso o proposto seja ler um número n e imprimir todos os números de n até 1
int n,i;
scanf("%d", &n);
for(i = n; i >= 1; i++){
scanf("%d ", i);
}
printf("\n");
Este tipo de programa irá retornar o veredito de TLE pois o programador está fazendo um loop decrescente com a condição de parada com i >= 1, porém no último campo do laço de repetição ele incrementa a variável, fazendo com que o número sempre cresça e nunca fique menor do que 1, entrando em um loop infinito.