NorTheR 0 Denunciar post Postado Outubro 24, 2006 Como fazer pra bloquear as letras, e só deixar liberado os numeros.. e.. Como fazer para liberar somente os numero de 1 a 7, sendo que se digitar 2, o algo não deixa digitar mais que isso.. :) http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif vlw Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Outubro 24, 2006 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
Márcio Paiva 0 Denunciar post Postado Outubro 24, 2006 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
NorTheR 0 Denunciar post Postado Outubro 24, 2006 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
Márcio Paiva 0 Denunciar post Postado Outubro 24, 2006 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
NorTheR 0 Denunciar post Postado Outubro 25, 2006 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
NorTheR 0 Denunciar post Postado Outubro 26, 2006 Como fazer um algo só para ler numero e um soh para ler caracteres, sejam diretos por favor !! é urgente!! Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Outubro 26, 2006 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
NorTheR 0 Denunciar post Postado Outubro 27, 2006 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
rickygeorgel 0 Denunciar post Postado Outubro 27, 2006 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
NorTheR 0 Denunciar post Postado Outubro 27, 2006 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
skimo-solar 0 Denunciar post Postado Outubro 27, 2006 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
rickygeorgel 0 Denunciar post Postado Outubro 27, 2006 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') ??sjdiushaduhNã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
Márcio Paiva 0 Denunciar post Postado Outubro 27, 2006 Não , não da para fazer isso com o getch.O skimo acabou de falar como fazer...<_< Compartilhar este post Link para o post Compartilhar em outros sites
NorTheR 0 Denunciar post Postado Outubro 28, 2006 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
skimo-solar 0 Denunciar post Postado Outubro 28, 2006 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
NorTheR 0 Denunciar post Postado Outubro 28, 2006 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
skimo-solar 0 Denunciar post Postado Outubro 28, 2006 "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
NorTheR 0 Denunciar post Postado Outubro 29, 2006 "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
rickygeorgel 0 Denunciar post Postado Outubro 29, 2006 boa tarde a minha duvida e se da para verificar se o digitado e mesmo um numerosem usar char se si como faço isso em C++obrigadoRicardo G Georgel Compartilhar este post Link para o post Compartilhar em outros sites