Tarefa 4

Tarefa 4

por Thomas Rodrigues Gomes -
Número de respostas: 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
Em resposta à Thomas Rodrigues Gomes

Re: Tarefa 4

por 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í...

Em resposta à Rafael Misoczki

Re: Tarefa 4

por 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.