maric11 Postado Outubro 27, 2010 Denunciar Share Postado Outubro 27, 2010 O programa serve para só receber números inteiros. Se a pessoa digitar uma palavra, por exemplo, ele informa que não é número e dá a possibilidade de escrever outro.O DevC chega a compilar, ms quando entro com um dado ele trava.Alguma ideia do que fazer?!#include <stdio.h> #include <stdlib.h> #include <string.h> char *str; char str2; int caract_fora_padrao, qp, posi_caract, comprim_string, aux, pp, procura_string_ok; float num; int main(){ printf("Entre com um numero:"); scanf("%c",&str); procura_string_ok=1; pp=0; while ((procura_string_ok) !=0) { caract_fora_padrao=0; qp=0; posi_caract=1; comprim_string = (strlen(str)); while ((posi_caract <= comprim_string)and(caract_fora_padrao)==0){ str2=("%char",str[posi_caract-1]); aux=("%d",*str); if ((aux>=48)and(aux<=57)or(aux=46)) { if (aux=46) { qp=qp+1; pp=posi_caract; } } else { caract_fora_padrao = (caract_fora_padrao)+1; } posi_caract = (posi_caract)+1; } if (caract_fora_padrao>0) { printf("Isso não é um numero"); procura_string_ok=1; } else { if (qp>1) { printf("Isso não é um numero"); procura_string_ok = 1; } else { printf("Isso é um numero"); (procura_string_ok)=0; } } if (procura_string_ok=1) { printf("Entre com um numero"); scanf("%char",str); } } return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RonaldoRG Postado Outubro 27, 2010 Denunciar Share Postado Outubro 27, 2010 Cara, acho que você tá fazendo muita coisa pra pouca coisa. Tem uma função isdigit da biblioteca ctype.h que verifica se um caractere é número ou não. Ai você faz um for pra verificar cada caractere da string, se um não for número então a string não é um número.Abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 p4t0X Postado Outubro 29, 2010 Denunciar Share Postado Outubro 29, 2010 (editado) Qual exatamente o erro?!@editVí algumas coisas...1) A variável str não tem comprimento, você precisa alocar memória pra ela. Solução: str = char[20];2) Você tem que ler string, o formato é "%s" ainda sim, vale ressaltar que strings com espaços não serão tratadas da forma esperada. Solução: "%s" no lugar de "%c" para a variável str;3) O formato "%char" não existe, é "%c", a variável str é um vetor de char, portanto na atribuição da str2, basta fazer uma atribuição simples. Solução: str2 = str[caracterequalquer];4) Na hora da comparação (linha 23), você precisa fazer o casttype para a posição do vetor a ser testada, não do vetor inteiro. Solução: aux = (int) str[posicaoasertestada]; Editado Outubro 29, 2010 por p4t0X Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
maric11
O programa serve para só receber números inteiros.
Se a pessoa digitar uma palavra, por exemplo, ele informa que não é número e dá a possibilidade de escrever outro.
O DevC chega a compilar, ms quando entro com um dado ele trava.
Alguma ideia do que fazer?!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.