Fabin Postado Outubro 17, 2009 Denunciar Share Postado Outubro 17, 2009 (editado) Boa Noite Galera...é o seguinte estou fazendo uma calculadora simples em c...porem estu com duvida em como fazer a restriçao ao que o usuario digitar pois quando ele digitar letras o progrma deve emitir uma mensagem de erro..posso usar o getch() porem é para char não é isso? e tambem caso o usuario digite um numro maior daria problema não??como faço issovalews Editado Outubro 18, 2009 por Fabin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Outubro 17, 2009 Denunciar Share Postado Outubro 17, 2009 Você pode armazenar o valor digitado numa string e ir verificando se existe algum valor não-numérico. Se estiver tudo Ok, utilize a função atoi para fazer a conversão para inteiro novamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabin Postado Outubro 17, 2009 Autor Denunciar Share Postado Outubro 17, 2009 Você pode armazenar o valor digitado numa string e ir verificando se existe algum valor não-numérico. Se estiver tudo Ok, utilize a função atoi para fazer a conversão para inteiro novamente.jonantah nno caso então declaro ela como int mesmo ou como char string[xx]??por exemplo o usuario digitou 5835 eu teria que fazer um if para cada posiçao?não conheço o atoi como funciona e qual a biblioteca??e como implementaria com o do while caso digite uma letraso um esboço ficaria mais ou menos assim?char str[5]; do{ printf(Digite um numero?) gets(str) if str[1] != [red]aqui não sei o que fazer[/red] ..... fazendo com as cinco posiçoes da stringo }whie(aqui também não sei como fazer) atoi(str) .... seria mais ou menos assim???valews Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Outubro 17, 2009 Denunciar Share Postado Outubro 17, 2009 Você terá que armazenar primeiramente um valor numa string, trabalhar com esse valor pra ver se é válido (percorrer todos os caracteres e ver se são dígitos) e depois converter pra inteiro com a função atoi da stdlib.h Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabin Postado Outubro 17, 2009 Autor Denunciar Share Postado Outubro 17, 2009 Você terá que armazenar primeiramente um valor numa string, trabalhar com esse valor pra ver se é válido (percorrer todos os caracteres e ver se são dígitos) e depois converter pra inteiro com a função atoi da stdlib.hjonatahn fiz aqui deste modochar str[5];int c; printf("Digite um numero.\n"); gets(str); if (((str[0]>='0')&&(str[0]<='9'))&&((str[1]>='0')&&(str[1]<='9'))&&((str[2]>='0')&&(str[2]<='9'))&&((str[3]>='0')&&(str[3]<='9'))&&((str[4]>='0')&&(str[4]<='9'))) { printf("e um numero %s",str); } else printf("erro"); c=atoi(str); printf("%i",c);deu certim porem quando eu digito um numero que não tenha 5 posiçoes da erro... como posso consertar isso?valews Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabin Postado Outubro 18, 2009 Autor Denunciar Share Postado Outubro 18, 2009 (editado) troquei a linha por(((str[0]>='0')&&(str[0]<='9'))||((str[1]>='0')&&(str[1]<='9'))||((str[2]>='0')&&(str[2]<='9'))||((str[3]>='0')&&(str[3]<='9'))||((str[4]>='0')&&(str[4]<='9')))e deu certo por enquanto não é? hehehe...mas agora me deparei com o seguinte problema...ao invés de transformar ele em inteiro vou transformalo para float pois o usuario também podera digitar um numero 3.5...agora como faço para ele identificar que é um numero é do tipo float pois do modo que fiz acim se ele digitar 3.5 ele não vairetornar 3.5 o que eu faço?valews Editado Outubro 18, 2009 por Jonathan Queiroz Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Outubro 18, 2009 Denunciar Share Postado Outubro 18, 2009 Primeiro, neste caso ele só vai aguentar 5 dígitos.Faça o seguinte:Variáveis:string -> char* -> ler do teclado -> sem inicializaçãoi -> int -> contador -> 0erro -> int -> marcador de erro -> 0Leia o teclado usando a função fgets da stdio.hFaça um while que rode enquanto string != '\n' (i = posição, começando com 0)Verifique se o caractere é diferente de 0~9 e '.'.Se for, coloque erro como 1 e faça um breakSe não for, incremente i e deixe o while rodar novamentePara transformar pra float, utilize atof.Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabin Postado Outubro 18, 2009 Autor Denunciar Share Postado Outubro 18, 2009 Primeiro, neste caso ele só vai aguentar 5 dígitos.Faça o seguinte:Variáveis:string -> char* -> ler do teclado -> sem inicializaçãoi -> int -> contador -> 0erro -> int -> marcador de erro -> 0Leia o teclado usando a função fgets da stdio.hFaça um while que rode enquanto string != '\n' (i = posição, começando com 0)Verifique se o caractere é diferente de 0~9 e '.'.Se for, coloque erro como 1 e faça um breakSe não for, incremente i e deixe o while rodar novamentePara transformar pra float, utilize atof.Abraços.durub esta variavel maracdor de erro vai servir para que?? quero que quando não for numero emite uma mensagem de erro entendeu? na parate while string != "\n" diferente de \n não entendi??não tem como você colocar este modos implementado no que coloquei ai em cima para eu entender??obrigadot+ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Outubro 18, 2009 Denunciar Share Postado Outubro 18, 2009 Posteriormente, você pode verificar se erro == 1 e então mostrar a mensagem de erro.Leia a documentação do fgets que você vai entender.Caso o usuário digite "oi", na string vai ficar:'o' 'i' '\n' NULLEntão o while vai executar até o final da string. Na verdade seria mais seguro tratar como NULL, só que aí você vai ter que verificar se o caractere não é um '\n' também.Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Fabin
Boa Noite Galera...
é o seguinte estou fazendo uma calculadora simples em c...
porem estu com duvida em como fazer a restriçao ao que o usuario digitar pois quando ele digitar letras o progrma deve emitir uma mensagem de erro..
posso usar o getch() porem é para char não é isso? e tambem caso o usuario digite um numro maior daria problema não??
como faço isso
valews
Editado por FabinLink para o comentário
Compartilhar em outros sites
8 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.