Ir ao conteúdo

C Print mostrando resposta errada


Ir à solução Resolvido por kgin,

Posts recomendados

Postado
#include <stdio.h>
#include <stdlib.h>
// Transforme um numero decimal em hexadecimal
int main(){
	
	int i=0;
	int resto[i];
	int num;
	int depois;
	
	printf("Digite um numero: \n");
	scanf("%d",&num);
	depois = num;
	
	while(num >= 16){
		resto[i] = num % 16;
		num = num / 16;
		i++;
	}
	resto[i] = num;
	printf("\nO numero %d em hexadecimal eh: \n",depois);
	
	while(i>=0){  
		if(resto[i] == 10){
			printf("A");
		}
		if(resto[i] == 11){
			printf("B");
		}
		if(resto[i] == 12){
			printf("C");
		}
		if(resto[i] == 13){
			printf("D");
		}
		if(resto[i] == 14){
			printf("E");
		}
		if(resto[i] == 15){
			printf("F");
		}
		else{
			printf("%d",resto[i]);
		}	
		i--;	
	}
	
	printf("\n\n");
	system("pause");
}

Estou tentando fazer um conversor de numero decimal para hexadecimal,

mas a resposta que meu programa está imprimindo é errado.

Exemplo: num = 438

a resposta deveria ser 1B6

mas aparece 1B116

decimal para hexadecimal - conversor.zip

  • Solução
Postado

Você errou na sintaxe do if o correto seria

		if(resto[i] == 10){
			printf("A");
		}
		else if(resto[i] == 11){
			printf("B");
		}
		else if(resto[i] == 12){
			printf("C");
		}
		else if(resto[i] == 13){
			printf("D");
		}
		else if(resto[i] == 14){
			printf("E");
		}
		else if(resto[i] == 15){
			printf("F");
		} else {
			printf("%d",resto[i]);
		}	

 

Nessa parte também está errada

29 minutos atrás, Isaque_Cunha disse:
	int i=0;
	int resto[i];

Só vai criar um vetor de tamanho 0, em C não há vetores dinâmicos sem reservar memória para tal estrutura.

 

O algoritmo funcionando

#include <stdio.h>
#include <stdlib.h>
// Transforme um numero decimal em hexadecimal
int main(){
	
	int i=0;
	int resto[100];
	int num;
	int depois;
	char buff[100];
	
	printf("Digite um numero: \n");
	fgets(buff, 100, stdin);
	sscanf(buff, "%d", &num);
	depois = num;
	
	while(num >= 16){
		resto[i] = num % 16;
		num = num / 16;
		i++;
	}
	resto[i] = num;
	printf("\nO numero %d em hexadecimal eh: \n",depois);
	
	while(i>=0){  
		if(resto[i] == 10){
			printf("A");
		}
		else if(resto[i] == 11){
			printf("B");
		}
		else if(resto[i] == 12){
			printf("C");
		}
		else if(resto[i] == 13){
			printf("D");
		}
		else if(resto[i] == 14){
			printf("E");
		}
		else if(resto[i] == 15){
			printf("F");
		} else {
			printf("%d",resto[i]);
		}	
		i--;	
	}
	
	printf("\n\n");
	fgets(buff, 100, stdin);
	// system("pause"); a piada já perdeu a graça :/ 
}

versão online!

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!