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.
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
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
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...
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...
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.
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.
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.
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.
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
)
Aumentei para um confortável 85 e... accepted!
(depois de muito tempo perdido checando outras coisas
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
Procura fazer também os testes triviais: uma ordenação como uma tartaruga só, e uma ordenação que já esteja pronta....
[ ] ´ s
Israel
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.
Nos casos de uma tartaruga só e pilha ja ordenada ele não imprime o nome de nenhuma tartaruga, certo???
[]´s.
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 wink](https://paca.ime.usp.br/pix/s/wink.gif)
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 big grin](https://paca.ime.usp.br/pix/s/biggrin.gif)
![wink wink](https://paca.ime.usp.br/pix/s/wink.gif)
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 big grin](https://paca.ime.usp.br/pix/s/biggrin.gif)
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...
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...
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.
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.
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 ^^