Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

NorTheR

Bloquear letras ou alguns numero no teclado

Recommended Posts

Para só aceitar os números.

Por ex:

while(){	a = getch();	if(a>='0' && a<='9') printf("%c",a);}
O resto fica de dever de casa ;).

 

Só cabe a você delimitar quando ele vai parar de receber os números e o que fazer com eles.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra complementar...A função:int isdigit(int ch)Retorna não-zero se o argumento é um caracter numérico [0 - 9]. Se não, retorna zero.OBS.: Está na biblioteca ctype.h ( #include <ctype.h> )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para só aceitar os números.Por ex:

while(){	a = getch();	if(a>='0' && a<='9') printf("%c",a);}
O resto fica de dever de casa ;).Só cabe a você delimitar quando ele vai parar de receber os números e o que fazer com eles.
Putz, mechendo aki não consegui fazer nada, nem compila, dentro do while eu boto o que por exemplo.. e as aspas não é usada só pra compara char, o que tá fazendo ali no numero? http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipow... O char também pode armazenar números, só que ele armazena o número como um caractere.

 

No tipo char, cada caractere equivale a um int. O tipo char ocupa 1byte, que é formado por 8 bits. Sendo assim, o tipo char pode armazenar números de 0 a 255 (255 = 2^8 - 1).

 

Por exemplo, se você declaram um char:

 

char letra = '0';

 

int numero = (int)letra;

 

O numero vai valer 48;

 

Então se você comparar:

 

if (letra == numero) { cout << "Que massa!";}

 

Será exibido: Que massa!

 

=PPP

 

Outro exemplo:

 

Se você declarar:

 

char letra = 48;

 

E colocar:

 

cout << letra;

 

Você terá a exibição do programa:

 

0

 

xD. Pode testar, porque o 48 está sem aspas, então é tratado como int.

 

----------------------------------------------------------------------------------

 

Agora esqueça isso. Olhe um exemplo utilizando como base o post do skimo:

 

#include <iostream>#include <conio.h>#include <stdlib.h>using namespace std;int main(){   char cnum[10]; //declara arranjo de chars.   int inum;   int cont = 0; //inteiro auxiliar, para percorrer os caracteres de cnum   while(cont!=6) //executa o laço enquanto cont não for igual a '6'   {	  cnum[cont] = getch(); //cnum[cont]  = numero digitado pelo usuario. 	   //OBS.: O número digitado pelo usuario ainda não foi exibido.	  if (cnum[cont] >= '0'  &&  cnum[cont] <= '7')	  {		 cout << cnum[cont]; // se o numero estava entre 0 e 7, aí sim exibe...		 if (cnum[cont] == '2')		 {			break; //aí verifica se o numero é igual a dois, e se for para o laço while.		 }		 cont ++;			// ... e passa para o próximo caractere (cont++)	  }   }   inum = atoi(cnum); //a função atoi(char*) Transforma uma string em um int.   cout << endl;   cout << "inum = " << inum << endl; //exibe o valor de inum.   system("pause");						     return 0;}

Nesse exemplo, cnum não é uma string, porque a string precisa terminar com nulo (\0). O caractere '\0' é colocado sozinho quando você faz algo do tipo:

 

char cnum[10];

cnum = "palavra";

 

Nesse caso, vamos ver como vai ficar cnum:

cnum[0] = 'p' (Que equivale a um inteiro)

cnum[1] = 'a' (Que equivale a um inteiro)

cnum[2] = 'l' (Que equivale a um inteiro)

cnum[3] = 'a' (Que equivale a um inteiro)

cnum[4] = 'v' (Que equivale a um inteiro)

cnum[5] = 'r' (Que equivale a um inteiro)

cnum[6] = 'a' (Que equivale a um inteiro)

cnum[7] = '\0' (Que equivale a um inteiro)

 

Os outros valores (cnum[8] e cnum[9]) vão ser aleatórios, mas não fazem diferença, já que o caractere terminador de strings('\0') já informa que a string acaba ali.

 

 

Espero ter ajudado.

Flw.

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui fazer isto aqui:

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

 

int main() {

char c;

 

do {

c = getch();

if (c>='0' && c<='7')

scanf("%c", &c);

}

while (c!='0'); }

 

não funciona 100%, você só consegue digitar numero de 0 a 7, mas você tem que apertar 3x o numero para aparecer :\

pq o skimo usou printf para ler o char?? afinal é printf ou scanf??

corrijam meu algo ali favor..

e me deem dicas de como fazer para digitar no maximo 1 numero, não deixar digitar 1 e 5.. aaa =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como fazer um algo só para ler numero e um soh para ler caracteres, sejam diretos por favor !! é urgente!!

Aquele exemplo serve pra isso também, a diferença vão ser os delimitadores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá o maximo que consegui foi isso#include <stdio.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>int main () { char c; bool s=false; do { c=getch(); if (c>'0' && c<'8') { printf("%c", c); s=true; } } while (!s); system("pause");}mas mal você coloca o numero ele já fecha, como fazer pra digitar e depois dar ENTER para fechar??e para ler somente letras o que se bota?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá o maximo que consegui foi isso#include <stdio.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>int main () { char c; bool s=false; do { c=getch(); if (c>'0' && c<'8') { printf("%c", c); s=true; } } while (!s); system("pause");}mas mal você coloca o numero ele já fecha, como fazer pra digitar e depois dar ENTER para fechar??e para ler somente letras o que se bota?

bom dia para que isso não aconteça coloca o seguinte: system("PAUSE"); return EXIT_SUCCESS;ai vai aparecer uma mensagem mas não vai sairou system("PAUSE>>null"); return EXIT_SUCCESS; para que não apareça nada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, minha pergunta era se usando o getch, daria pra digitar o numero e depois de apertar ENTER o programa acabace de rodar.. o que acontece ali é que você digita 5 e já encerra, como se já tivece pressionado ENTER!E para ler somente letras o que eu boto?if (c>='a' && c<='z') ??sjdiushaduh

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas mal você coloca o numero ele já fecha (...)

s=true;} }while (!s);system("pause");}
Você seta o s=true e põe um while(!s).O que vai acontecer? Ele só vai executar UMA vez. Porque você já está setando s=true e o while vai parar de executar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, minha pergunta era se usando o getch, daria pra digitar o numero e depois de apertar ENTER o programa acabace de rodar.. o que acontece ali é que você digita 5 e já encerra, como se já tivece pressionado ENTER!E para ler somente letras o que eu boto?if (c>='a' && c<='z') ??sjdiushaduh

Não , não da para fazer isso com o getch.para ler letras acho que você pode fazer o seguinte:if (c!='0' && c!='1' && c!='2' && c!='3' && c!='4' && c!='5' && c!='6' && c!='7' && c!='8' && c!='9') mais se não me engano tem um comando que faz isso mas não estou conseguindo lebrar qual e.espero ter ajudadoRicardo G Georgel

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas mal você coloca o numero ele já fecha (...)

s=true;} }while (!s);system("pause");}
Você seta o s=true e põe um while(!s).O que vai acontecer? Ele só vai executar UMA vez. Porque você já está setando s=true e o while vai parar de executar...
Não entendi, daria pra refazer em cima do meu algoritmo pra mim ver como fica?MAS acho que não entenderam a minha pergunta.. eu falei que usando esse algo, você digita o 8 e já termina a loop todo.. com o scanf, você digitaria o 8 e apertaria ENTER e daí sairia, então , eu quero que só aceite numeros ou palavras, que quando aperta um numero não acabe o algo, e sim espera o ENTER pra finalizar..Otra, teria outro codigo pra só aceitar palavras?Esse é o unico que eu pensei tambem :Ptentei esse mas naum deu (c!=(c>=0 && c<=9)) http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

do {c=getch();if (c>'0' && c<'8') {printf("%c", c);s=true;} }while (!s);system("pause");}
- Você digita um '7' por exemplo.

- Ele recebe e coloca na variável c

- Vai entrar no if por atender às condições.

- O que tem dentro do if? Imprime c e coloca s=true

- Sai do condicional

- Vai testar a condição do while para ver se continua

- While not s, s=true então !s=false.

- Vai parar de executar o while porque não atende mais às condições.

- Ou seja, sai do programa assim que você digitar o primeiro número entre 0 e 8.

 

(c!=(c>=0 && c<=9))

Você vê se c está entre 0 e 9. Deve retornar ou true ou false. Depois você compara o c com esse true ou false. Ou seja, temos um erro de tipos aí. Você está comparando o caractere com um True ou False. Por isso não está tendo o resultado que você espera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

do {c=getch();if (c>'0' && c<'8') {printf("%c", c);s=true;} }while (!s);system("pause");}
- Você digita um '7' por exemplo.

- Ele recebe e coloca na variável c

- Vai entrar no if por atender às condições.

- O que tem dentro do if? Imprime c e coloca s=true

- Sai do condicional

- Vai testar a condição do while para ver se continua

- While not s, s=true então !s=false.

- Vai parar de executar o while porque não atende mais às condições.

- Ou seja, sai do programa assim que você digitar o primeiro número entre 0 e 8.

 

(c!=(c>=0 && c<=9))

Você vê se c está entre 0 e 9. Deve retornar ou true ou false. Depois você compara o c com esse true ou false. Ou seja, temos um erro de tipos aí. Você está comparando o caractere com um True ou False. Por isso não está tendo o resultado que você espera.

 

Aqui eu entendi, mas voltando ao algo..

 

 

"Ou seja, sai do programa assim que você digitar o primeiro número entre 0 e 8."

claro que não , o algo não aceita os numeros que não estão no intervalo, teste ele antes de falar..

 

O que eu queria seria assim, se você trocar o getch por getchar, ele espera o ENTER pra finalizar, mas deixa digitar qq coisa =\

Teria como usar o getch para limitar o que você vai digitar e o getchar pra esperar o ENTER?

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Ou seja, sai do programa assim que você digitar o primeiro número entre 0 e 8."claro que não , o algo não aceita os numeros que não estão no intervalo, teste ele antes de falar..

Pelo seu código é exatamente o que ele faz, assim que você digitar o primeiro número >0 e <8 ele vai sair do programa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Ou seja, sai do programa assim que você digitar o primeiro número entre 0 e 8."claro que não , o algo não aceita os numeros que não estão no intervalo, teste ele antes de falar..

Pelo seu código é exatamente o que ele faz, assim que você digitar o primeiro número >0 e <8 ele vai sair do programa.
então eu estou emplorando a 2 mil anos para alguma alma penada arrumar, e ninguem arruma, e nunca vai acaba minha duvida, pomba! :angry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.