Ir ao conteúdo
  • Cadastre-se

C Arredondamento de valor float para o inteiro menor, ex: 2.9 para 2


hfagif19

Posts recomendados

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void binário(int n){
    if (n==0){
        printf("%i", n);
    }else{
        binário(n/2);
        printf("%i", n%2);
    }
}
void octal(int n){
    int oct = 0, cont = 1;
    while (n != 0){
        int cont2 = n % 8;
        oct += cont2 * cont;
        cont = cont * 10;
        n /= 8;
    }
    printf("%i", oct);
}

int main (){
    int n=0, base, i;
    double decimal;

    printf("numero a ser transformado:");
    scanf("%lf", &decimal);

    for(i=0; i<decimal; i++){
        n= n+1;
    }

    printf("base:");
    scanf("%i", &base);

    if(base==2){
        binário(n);
    }else if(base==8){
        octal(n);
    }else if(base==16){
        printf ("%2X",n);
    }

    return 0;
}

Elabore um algoritmo em C que solicita um número decimal e uma base. Se um número não inteiro for fornecido, seu algoritmo deve considerar apenas a parte inteira do número. Como valor para base, pode ser fornecido o valor 2 (para base binária), 8 (para base octal) e 16 (para base hexadecimal). 

Seu algoritmo de mostrar o valor convertido para a base indicada.

Exemplo 1:entrada: 5 2

5 é o valor que se quer converter

2 é a base para converter

saída: 101

Exemplo 2:entrada: 5.5 16

5.5 não é um valor inteiro, então será utilizado o número 5 como valor que se quer converter

16 é a base para converter

saída: 5

 

Estou tendo problemas quando preciso arredondar para o numero inteiro, ainda não consegui arrumar.

 

Link para o comentário
Compartilhar em outros sites

@Ruan1518 Não use acentuação quando for dar nome pra suas variáveis, funções, etc.

Pode funcionar na sua máquina, mas veja, aqui não funcionou.

image.png.d68a70df302ebf9204ac0ca0be993bd1.png

 

Dá uma olhada no resultado quando testamos o exemplo 1:

image.png.50b2c4903ac6c752754303eb5ccb3e7f.png

Zeros à esquerda não deveriam aparecer, precisa corrigir isso.

 

1 hora atrás, Ruan1518 disse:

Estou tendo problemas quando preciso arredondar para o numero inteiro, ainda não consegui arrumar.

Use type cast para inteiro:

n = (int)decimal;

Funciona, mas novamente, aparecem zeros à esquerda:

image.png.aba8b2a091dcb51be379b99662af9a3a.png

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!