Tarefa 4

Tarefa 4

by Thomas Rodrigues Gomes -
Number of replies: 4
Estou com um problema bem estranho na minha tarefa 4.
Implementei o algoritmo do mergesort, e adaptei um contador nele. Como eu já tinha testado anteriormente, para esse problema o (int) não é suficiente para problemas muito grandes. Então usei o (unsigned long long) para resolver meu problema. Porém o long tem um problema ao fazer certas somas, tipo 1+3+6=12, não sei porque. Até um cast de double pra unsigned long long da esse mesmo problema. Submeti no uVA com inteiro e ele retorna erro, agora eu não sei se é por estourar o (int) ou se minhas contas estão erradas.
Já testei pra long long, long, unsigned long. Tudo o mesmo erro. Quero saber oque eu faço. Devo mandar meu código com unsigned long long mesmo, ou com int?

                   Thomas
In reply to Thomas Rodrigues Gomes

Re: Tarefa 4

by Cauê Haucke Porta Guerra -
eu mandei só com long e deu AC, verifica teu algoritmo

[]s

Cauê
In reply to Cauê Haucke Porta Guerra

Re: Tarefa 4

by Marcos Bonci Cavalca -
Bom, no meu caso o long não funcionou. Só mudei a variável pra unsigned long long e o juiz aceitou, então é bom verificar isso também.
In reply to Thomas Rodrigues Gomes

Re: Tarefa 4

by Rafael Misoczki -
Muito estranha essa história do unsigned long long int ter essa aritmética...

Assim, uma coisa que as vezes pode ter acontecido é você estar imprimindo essa variável com o identificador errado... Por ex.:

para imprimir um unsigned long long int certifique-se de estar usando: printf("%llu"); ou printf("%I64u");
ao invés, de por ex.: printf("%lld"); ou até mesmo printf("%d");

dá uma verificada nisso aí...

In reply to Rafael Misoczki

Re: Tarefa 4

by Thomas Rodrigues Gomes -
Obrigado pela chamada de atenção e pelo exemplo. Eu estava usando %llo pra imprimir, mas com o %llu ele imprimiu corretamente e foi aceito no uVA.
Agradeço a ajuda.