Ir ao conteúdo
  • Cadastre-se

C Verificação de um número inteiro


Posts recomendados

Devo fazer um programa que imprima na tela a sequência de 1 ao número digitado. Se o usuário digitar o número zero, número negativo ou número decimal. deve-se aparecer uma mensagem de erro e uma nova oportunidade de digitação de um número inteiro positivo.

Erro: não estou conseguindo imprimir a mensagem de erro para um número decimal digitado.

 

#include <stdio.h>

main(){

    int a, i;
    float b;
    printf("Digite um numero: ");
    scanf("%d", &a);


    if (a < 0){
        printf("Erro! voce digitou um numero negativo.\n");
        printf("Nova chance. Digite um numero: ");
        scanf("%d", &a);
        for(i = 1; i <= a; i++)
        printf("\n%d\n", i);
    }


    if (a == 0){
     printf("Erro! voce digitou o numero zero.\n");
        printf("Nova chance. Digite um numero: ");
        scanf("%d", &a);
        for(i = 1; i <= a; i++)
        printf("\n%d\n", i);
    }
                         
      //Aqui deve vir a parte do erro de n° decimal


    if (a > 0){
        for(i = 1; i <= a; i++)
        printf("%d\n", i);
    }
    

    return 0;
}

 

  • Curtir 1
Link para o post
Compartilhar em outros sites

public void verificaNumero

(string valor) { if (Int32.TryParse(valor, out valor))

// se cair aqui o numero é inteiro

else if (Decimal.TryParse(valor, out valor))

// se cair aqui o numero é decimal }

  • Obrigado 1
  • Confuso 1
Link para o post
Compartilhar em outros sites

@pedro.maciel Qual caractere nos dados que não represente um elemento do conjunto dos números naturais* logo qualquer número cujo valor é menor ou igual 0, ou tem parte (fração) define uma leitura invalida. Então repense sua programação com dados 'double' (ou 'float') invés de 'int' essa é a abodegam sintética, usual e seu código está no caminho certo. 

  • Curtir 1
Link para o post
Compartilhar em outros sites

Use um laço do-while para ficar pedindo o número para o usuário, enquanto o mesmo não for válido. Aproveite e coloque a lógica de validação dentro de uma função, assim deixa o código mais organizado.

2 horas atrás, gbrdoidao disse:

public void verificaNumero

(string valor) { if (Int32.TryParse(valor, out valor))

// se cair aqui o numero é inteiro

else if (Decimal.TryParse(valor, out valor))

// se cair aqui o numero é decimal }

Acho que esse código é do C#, o autor está usando C.

  • Curtir 1
  • Obrigado 1
Link para o post
Compartilhar em outros sites
3 horas atrás, mauro_b disse:

@pedro.maciel Qual caractere nos dados que não represente um elemento do conjunto dos números naturais* logo qualquer número cujo valor é menor ou igual 0, ou tem parte (fração) define uma leitura invalida. Então repense sua programação com dados 'double' (ou 'float') invés de 'int' essa é a abodegam sintética, usual e seu código está no caminho certo. 

 

A ideia é por ai mesmo, trate tudo como double e para saber se é inteiro você usa a funcao modf.

 

O programa todo seriam um loop pra pessoa fazer a entrada dos dados até apertar esc ou algo assim (ou uma pergunta se quer continuar com uma flag pra sair do loop), um outro loop pra fazer o print dos digitos e alguns ifs fazer o que você quer (menor q 0, igual a 0 e maior q 0) , dentro do if maior q zero você coloca o modf pra pegar a parte inteira e a quebrada e faz outro if, se a parte quebrada por 0 é porque é inteiro, senao você dá erro.

  • Curtir 1
Link para o post
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...

Redes-Wi-Fi-capa-3d-newsletter.png

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!