Ir ao conteúdo
  • Cadastre-se

C Programa para dizer se é inteiro ou decimal


Joel Martins
Ir à solução Resolvido por Flávio Pedroza,

Posts recomendados

@Joel Martins considerando que

  • você não leu um valor e
  • só tem uma variável e
  • ela é inteira, int,

 

a resposta deve ser sim, para qualquer valor, quando você começa a ler.

 

Tivesse você um valor decimal e um inteiro que acharia da seguinte ideia: divide por um e coloca o resultado em um inteiro. multiplica por um e subtrai do original pra ver o que sobra...

 

Tente com 5/2, também conhecido como dois e meio e veja o que acha.

Link para o comentário
Compartilhar em outros sites

Cuidado com o uso de ponto flutuante fazendo casting para inteiros, isso vai gerar problemas

 

/

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

bool float_is_integer(float f, float epsilon)
{
    if (fabsf(roundf(f) - f) <= epsilon)
        return true;
    return false;
}

int main()
{
    //      3 == (3 ^ (1/20)) ^ 20
    float tres = powf(powf(3.0f, 0.05f), 20.0f); // Está conta retorna deve retornar 3

    if (float_is_integer(tres, 0.00001f))
        printf("%.0f\n", tres);
    else
        printf("Nao eh inteiro\n");
        
    return 0;
}

 

A conta acima matematicamente tem resultado 3, mas se efetuar a conta com ponto flutuante vai retornar 2.9999992847, portanto a função permite você adicionar uma margem de erro (paramentro epsilon).

 

Link para o comentário
Compartilhar em outros sites

18 horas atrás, Flávio Pedroza disse:

#include <stdio.h>

int main()
{
    float b = 2.5;

    if(b==(int)b) printf("E inteiro");
  	else printf("Nao e inteiro");
  return 0;
  }

 

Obrigado. O meu objetivo era fazer isso para depois completar outro programa que estou a fazer. Agora já percebi . Em vez de eu dar a variável, peço ao utilizador.

Obrigado:)

#include <stdio.h>

int main()
{
    float b;

    printf("Introduz um valor-->");
    scanf("%f",&b);

    if(b==(int)b)

        printf("E inteiro");

  	else
        printf("Nao e inteiro");

  return 0;

  }

 

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