Shellsort

Shellsort

por Cristiano Perez Garcia -
Número de respostas: 11
Alguém que já conseguiu ter o seu código aceito teria alguma dica para driblar o maldito WA.
Em todos os testes que eu faço aqui o programa funciona corretamente, mas o juiz insiste em me dar um Wrong Answer.

Aceito sugestões.
Em resposta à Cristiano Perez Garcia

Re: Shellsort

por Rafael Misoczki -
Assim, é apenas um detalhe, mas teste um exemplo em que na entrada de dados há espaços _antes_ do nome...
No começo tive um certo problema com isso, meu scanf não estava preparado pra recebe uma string q pudesse começar com espaços...

Bom é só mais um teste, mas as vezes pode ajudar!

Abraços
Em resposta à Rafael Misoczki

Re: Shellsort

por André Folli -
Eu estou com o mesmo problema... não consigo passar no WA...

Meu programa tem que prever o caso de algum nome da pilha original não estar na pilha final?
Alguém sugere mais algum teste???

Obrigado...
Em resposta à Cristiano Perez Garcia

Re: Shellsort

por Andre Guerra da Silva -
Aqui vao algumas coisas que pra mim pegaram bastante:

1. tamanho dos nomes na pilha, tive que alocar 81 posicoes
2. numero maximo de nomes na pilha, tive que alocar 200 posicoes
3. imprimir os 'newline' nos lugares certos

Qualquer umas dessas coisas dá wrong answer se estiver errado.

Espero que ajude.
Em resposta à Andre Guerra da Silva

Re: Shellsort

por Rafael Schouery -
Os professores de Desafios aconselham ainda que você aloque ainda mais espaço.
A questão é a seguinte: você não vai gastar toda a memória da pilha do C alocando um pouco a mais e por outro lado evita muitos segfaults.
As vezes seu programa sem querer acessa uma posição a mais, mas funciona corretamente.
Eu alocaria umas 210 posições para as tartarugas e uns 85 chars para o nome.
O 80 é em, geral a furada do pessoal, por causa do \0 que agente sempre esquece.
Em resposta à Rafael Schouery

80 x 81

por Carlos Duarte do Nascimento -
No meu caso, por algum motivo, mesmo o 81 dava problema.

Aumentei para um confortável 85 e... accepted!

(depois de muito tempo perdido checando outras coisas triste )
Em resposta à Cristiano Perez Garcia

Re: Shellsort

por Israel Lacerra -
O meu foi aceito...mas fiquei um tempo quebrando a cabeça por causa de um /n. Ele dava erro por que eu não pulava uma linha pra separar os testcases. Pode ser isso.
Procura fazer também os testes triviais: uma ordenação como uma tartaruga só, e uma ordenação que já esteja pronta....


[ ] ´ s


Israel
Em resposta à Israel Lacerra

Re: Shellsort

por André Folli -
Valeu pelas dicas pessoal... mas ainda não passou... heheheh

Nos casos de uma tartaruga só e pilha ja ordenada ele não imprime o nome de nenhuma tartaruga, certo???

[]´s.
Em resposta à André Folli

Re: Shellsort

por Thiago Miranda Ferreira -
Após muuuuuuuuuuito tempo brigando com o Juiz, huehiuheiheihee, o meu foi aceito quando adotei a tática de utilizar uma função que normalmente não é utilizada... A fgetc... Ela pode ajudar bastante, principalmente no tratamento dos temidos \n e espaços (seja lá onde eles estiverem). Optei por ela, por causa do que esta função retorna ao ler um caractere... wink
Só um detalhe, alguém disse logo acima que foi preciso utilizar um limite máximo de 81 caracteres para o nome das tartarugas, mas isso não é necessário não... O limite de 80 caracteres deve funcionar, assim como está no enunciado.
Espero ter ajudado!!
Abraços a todos. big grin
Em resposta à Thiago Miranda Ferreira

Re: Shellsort

por Thiago Henrique Coraini -
Thiago, acho que o 81 que ele quis dizer foi pra ter uma posição a mais pro '\0', no caso de C claro...Apesar que eu antes tava fazendo só com 80 e nem dava pau...

Bom gente, um pau danado que eu tomei do juiz foi que ele parece não aceitar funções do tipo strcmp, strcpy, se usadas com vetores de char alocados de forma diferente...Tipo, se eu passava um dos parâmetros alocado estaticamente (char nome[80]) e outro dinamicamente (char *nome e depois malloc) ele não ia de jeito nenhum...Agora, trocando ambos pra ponteiro (e acredito que ambos estáticos também) ele funfou que foi uma beleza...

Engraçado que no linux e no win ele não dava pau nenhum...

Bom, abram o olho pra esse caso também...

Abraços...
Em resposta à Thiago Miranda Ferreira

Re: Shellsort

por Rafael Schouery -
Existe dois tipos de problemas que sempre encontro na leitura dos problemas da UVa: espaços no meio da string e uma quantidade indeterminada de linhas.
Os espaços eu costumo resolver com
scanf("%[^\n]", &string); getchar();
O scanf lê tudo o que não for \n e depois o getchar remove esse \n para não estragar a proxima leitura. As vezes você tem que testar se o getchar não é EOF e então você para a leitura.
Em resposta à Rafael Schouery

Re: Shellsort

por Marcio Masaki Tomiyoshi -
Uma solução mais simples é usar o fgets no stdin. Teoricamente pode dar problema no último elemento na hora de comparar (se não tiver \n e sim um EOF), mas no caso do ShellSort dá pra usar sem problemas, eu usei ^^