Power Pixel - Conteúdos e suporte a sua volta.
Redes Sociais:
FÓRUM ESTARÁ PASSANDO POR MUDANÇAS. SÁBADO, 01 JUL ESTAREMOS DE VOLTA 100%

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

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

Mensagem - Página 1 de 2

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);

Membro Diamante

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

Membro

avatar
Picies 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

Membro Diamante

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)

Membro

avatar
iJhefeX 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

Membro Diamante

avatar
Editei a resposta, tinha bugado, sorry

Membro

avatar
Não resolveu

Membro Diamante

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

Membro

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

Membro Diamante

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

Mensagem - Página 1 de 2

Ir à página : 1, 2  Seguinte

Tópicos similares

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