Você não está conectado. Conecte-se ou registre-se

Power Pixel » Geek Zone » Paraíso dos desenvolvedores » Suporte e Pedidos » Questões Resolvidas » Ajuda em C - Loop infinito ao digitar número decimal em variável inteira

Ajuda em C - Loop infinito ao digitar número decimal em variável inteira

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

Picies

Membro


avatar
Estou com um trabalho da faculdade pra sabado, está quase tudo pronto mas estou com um bug, ao digitar o valor da resposta em numero decimal ou caractere (sendo que a variavel só permite numeros inteiros como resposta) ocorre loop infinito.

Demonstraçao (fragmento do codigo, tirei só algumas variaveis que nao vem ao caso pra n ficar extenso)

int main(){
    int dia, mes, ano;
    float peso;
    setlocale(LC_ALL, "Portuguese");
    do{
    do{
            printf("Digite o dia de nascimento da criança (Exemplo: 02/04/2016, digite 2):\n");
            scanf("%i", &dia);
    }while(dia<1 || dia>31);

Ver perfil do usuário

iJhefeX

Membro Platina


avatar
Você ta lendo " i " onde seria " f (float) " não ?

Ver perfil do usuário

Picies

Membro


avatar
[Você precisa estar registrado e conectado para ver este link.] escreveu:Estou com um trabalho da faculdade pra sabado, está quase tudo pronto mas estou com um bug, ao digitar o valor da resposta em numero decimal ou caractere (sendo que a variavel só permite numeros inteiros como resposta) ocorre loop infinito.

Demonstraçao (fragmento do codigo, tirei só algumas variaveis que nao vem ao caso pra n ficar extenso)

int main(){
    int dia, mes, ano;
    float peso;
    setlocale(LC_ALL, "Portuguese");
    do{
    do{
            printf("Digite o dia de nascimento da criança (Exemplo: 02/04/2016, digite 2):\n");
            scanf("%i", &dia);
    }while(dia<1 || dia>31);

acho que vc leu errado

Ver perfil do usuário

iJhefeX

Membro Platina


avatar
Código:
#include <stdio.h>


int main(int argc, char *argv[])
{
    int dia,mes,ano;
    do{
            printf("Digite o dia de nascimento da criança (Exemplo: 02/04/2016, digite 2):\n  \n");
            printf ("Digite o dia\n");
 scanf("%d", &dia);
 printf ("Digite o mes\n");
 scanf("%d", &mes);
 printf ("Digite o ano\n");
 scanf("%d", &ano);
    printf ("A crianca nasceu no dia %d/%d/%d \n",dia,mes,ano);
    }while(dia<1 || dia>31);

}
Aqui leu normal, quando pus decimal ele converteu para int



Última edição por iJhefeX em Qui 12 Out 2017 - 16:56, editado 3 vez(es) (Razão : mudar código)

Ver perfil do usuário

Picies

Membro


avatar
[Você precisa estar registrado e conectado para ver este link.] escreveu:[code]    int dia;
   do{
           printf("Digite o dia de nascimento da criança (Exemplo: 02/04/2016, digite 2):\n");
           scanf("%d",

ja tentei usar %d, nao resolve

Ver perfil do usuário

iJhefeX

Membro Platina


avatar
Editei a resposta, tinha bugado, sorry

Ver perfil do usuário

Picies

Membro


avatar
Não resolveu

Ver perfil do usuário

iJhefeX

Membro Platina


avatar
Código:
#include <stdio.h>


int main(int argc, char *argv[])
{
    float dia,mes,ano;
   int diad;
    do{
            printf("Digite o dia de nascimento da criança (Exemplo: 02/04/2016, digite 2):\n\n");
            printf ("Digite o dia\n");
      scanf("%f", &dia);
      diad=dia;
 printf ("Digite o mes\n");
      scanf("%f", &mes);
 printf ("Digite o ano\n");
      scanf("%f", &ano);
       printf ("A crianca nasceu no dia %1.f/%1.f/%1.f \n",dia,mes,ano);

   }
   while(diad!=dia);
}
tente agora

Ver perfil do usuário

Picies

Membro


avatar
continua passando direto pra proxima pergunta, ele deveria ler como incorreto e repetir a pergunta

Ver perfil do usuário

iJhefeX

Membro Platina


avatar
tem certeza? Ele repete sim, complete as 3 perguntas.

Ver perfil do usuário

Infernus

Membro Platina



[aviso=Moderação] O tópico foi fechado pelo seguinte motivo: Questão Resolvida (o autor informou no chatbox que era para fechar o tópico).[/aviso]

Ver perfil do usuário

Conteúdo patrocinado



Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum