Ir ao conteúdo
  • Cadastre-se

C Erro na conversão de bases numéricas


Posts recomendados

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
Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...