Ir ao conteúdo
  • Cadastre-se
diogo moura

C Erro na conversão de bases numéricas

Recommended Posts

Bom estou fazendo a questão 1199 Conversão de bases do uri porém em alguns casos o meu teste passou, só que quando eu coloquei um número que o pessoal colocou no fórum deu erro, o número foi 0x80000000 o resultado esperado é 2147483648, só que meu código imprime -2147483648, já tentei multiplicar por -1 e o resultado continua negativo, alguém poderia me ajudar

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
char saber_o_tipo(char *numero);

int main(int argc, char** argv)
{
   char *numero;
   numero = (char*)malloc(sizeof(char) * 1000000);
   int resposta, valor;
   while(1)
   {
     scanf("%s", numero);
     if(numero[0] == '-')
     {
        break;
     }
     resposta = saber_o_tipo(numero);
     if(resposta > 0)
     {
        sscanf(numero, "%x", &valor);
        if(valor < 0)
        {
            printf("%d\n", valor*-1);
        }
        else
        {
            printf("%d\n", valor);
        }
     }
     else
     {
        sscanf(numero, "%d", &valor);
        printf("Ox%X\n", valor);
     }
 }
  free(numero);
  return 0;
}

char saber_o_tipo(char *numero)
{
  int i, contador = 0, tamanho;
  tamanho = strlen(numero);
  for(i = 0; i < tamanho; i++)
  {
     if(isalpha(numero[i]))
     {
        contador++;
     }
  }
  if(contador > 0)
  {
     return 1;
  }
  else
  {
     return 0;
  }
}

5ac275037fa8c_questo.thumb.png.539f369e613f19f7ef9aad7704873467.png

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@diogo moura , Oi cara!

Adicione o modificador de tipos: unsigned no printf

Spoiler

        if(valor < 0)
        {
            printf("%u\n", valor);
        }
        else
        {
            printf("%u\n", valor);
        }

 

Funcionou ?

~~ / ~~

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
42 minutos atrás, diogo moura disse:

Olha @AnsiC , fiz o que você pediu porém ainda estou levando 60% de erro

Como assim esse não é o seu problema na postagem seu problema é que estava saído com sinal negativo.

6 horas atrás, diogo moura disse:

esperado é 2147483648, só que meu código imprime -2147483648, já tentei multiplicar por -1 e o resultado continua negativo, alguém poderia me ajudar

Continua negativo? Aqui resolveu.

 

Desculpa por não poder ajudar mais.

Minha intenção é ajudar apenas com sintaxe C.

Aguarde mais um pouquinho que alguém vai lhe dar a resposta da questão ( lógica )

 

 

valeu!

~~ / ~~

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×