Acma 1 Denunciar post Postado Fevereiro 9, 2010 Boa noite pessoal !! desenvolvi um simples software com alguns menus e sub-menus no dev c++. porém, eu preciso fazer um bloqueio de letras nos menus e sub-menus, pois quando eu digito alguma letra, o progama fecha, e necessitaria que o progama emitisse algum alerta de erro, pensei em fazer isso usando como base a tabela ascii, porem não sei ao certo como formular tal algoritimo. se surgir alguma ideia, por favor, postem ! grato desde já. rodrigo meneguetti zaiden Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Fevereiro 9, 2010 Rodrigo, Mesmo sem você postar, arrisco dizer que você está lendo as letras com: "scanf("%c");", não é? Se for esse o caso, vá em laboratório de códigos fontes (C/C++) e lá vai encontrar um tópico meu, pinado, entitulado porque NÃO utilizar fflush(stdin) e system("pause"). Se não for esse o problema, ajudará muito se você postar o código aqui! Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Acma 1 Denunciar post Postado Fevereiro 10, 2010 ola VictorCacciari, agradeço a atenção, mais eu não estou querendo fazer a leitura de caracteres, eu quero impedi-los, quero que os menus só aceitem numeros entende ? e qdo o usuario digitar algum caractere, exiba uma mensagem de erro ! abaixo, segue um trecho do progama que estou desenvolvendo, void ConversaoMedidas(){ int scan_opt_conv_medidas,continua; float vlr_mil,mil_pol,pol_mil,vlr_pol,km_milh,vlr_km,mil_km,vlr_milh,cel_fah,vlr_fah,fah_cel,vlr_cel,vlr_mm,vlr_hec,hec_mm,mm_hec; printf("\n:: CONVERSOES DE MEDIDAS ::"); printf("\n\n 1- Milimetro --> Polegada"); printf("\n 2- Polegada --> Milimetro"); printf("\n 3- Kilometro --> Milha"); printf("\n 4- Milha --> Kilometro"); printf("\n 5- Metro Quadrado --> Hectare"); printf("\n 6- Hectare --> Metro Quadrado"); printf("\n 7- Celsius --> Fahrenheit"); printf("\n 8- Fahrenheit --> Celsius"); printf("\n 9- Voltar ao Menu Principal"); printf("\n\n- Digite a opcao:"); scanf("%d",&scan_opt_conv_medidas); switch(scan_opt_conv_medidas) { case 1: /*calcular milimetros para polegadas */ printf("Digite o valor em milimetro(mm):"); scanf("%f", &vlr_mil); mil_pol= (vlr_mil/25.4); printf("\nEsse valor em Polegadas sera de:"); printf("%.1f in (polegadas)", mil_pol); printf("\n\nPressione qualquer tecla para voltar ao menu de Conversao de Medidas"); getch(); system("cls"); ConversaoMedidas(); break; case 2: /*calcular polegadas para milimetros */ printf("Digite o valor em polegada:"); scanf("%f", &vlr_pol); pol_mil= vlr_pol * 25.4; printf("\nEsse valor em Milimetros sera de:"); printf("%.1f mm (milimetros" , pol_mil); printf("\n\nPressione qualquer tecla para voltar ao menu de Conversao de Medidas"); getch(); system("cls"); ConversaoMedidas(); break; case 3: /*calcular kilometro para milha */ printf("Digite o valor em kilometros:"); scanf("%f", &vlr_km); km_milh = vlr_km * 1.609344; printf("\nEsse valor em milhas sera de:"); printf("%.1f mi(milhas)", km_milh); printf("\n\nPressione qualquer tecla para voltar ao menu de Conversao de Medidas"); getch(); system("cls"); ConversaoMedidas(); break; case 4: /*calcular milha para kilometros */ printf("Digite o valor em Milhas:"); scanf("%f", &vlr_milh); mil_km = vlr_milh / 1.609344; printf("\nEsse valor em kilometros sera de:"); printf("%.1f km (kilometros)", mil_km); printf("\n\nPressione qualquer tecla para voltar ao menu de Conversao de Medidas"); getch(); system("cls"); ConversaoMedidas(); break; case 5: /*calcular metros quadrados para hectares */ printf("Entre com o valor em metros quadradros:"); scanf("%f", &mm_hec); vlr_hec= (mm_hec/10000); printf("O valor em hectares sera de:"); printf("%5.4f hectares", vlr_hec); printf("\n\nPressione qualquer tecla para voltar ao menu de Conversao de Medidas"); getch(); system("cls"); ConversaoMedidas(); break; case 6: /*calcular hectares para metro quadrado */ printf("Entre com o valor em hectares:"); scanf("%f", &hec_mm); vlr_mm = (hec_mm*10000); printf("O valor em metros quadrados sera de:"); printf("%5.4f metros quadrado", vlr_mm); printf("\n\nPressione qualquer tecla para voltar ao menu de Conversao de Medidas"); getch(); system("cls"); ConversaoMedidas(); break; case 7: /*calcular Fahrenheit para Celsius */ printf("Digite a temperatura em Celsius :"); scanf("%f", &vlr_fah); cel_fah= (vlr_fah * 9/5 + 32); printf("\nA temperatura em Fahrenheit sera de:"); printf("%.1f Celsius" , cel_fah); printf("\n\nPressione qualquer tecla para voltar ao menu de Conversao de Medidas"); getch(); system("cls"); ConversaoMedidas(); break; case 8: /*calcular Celsius para Fahrenheit */ printf("Digite a temperatura em Fahrenheit:"); scanf("%f", &vlr_cel); fah_cel= (vlr_cel - 32)*5/9; printf("\nA temperatura em Celsius sera de:"); printf("%.1f Fahrenheit" , fah_cel); printf("\n\nPressione qualquer tecla para voltar ao menu de Conversao de Medidas"); getch(); system("cls"); ConversaoMedidas(); break; case 9: system("cls"); menu_principal(); break; default: printf("\n\n\a ||| Opcao Invalida ||| "); system("cls"); ConversaoMedidas(); break; } } minha intenção, é que ao selecionar algum menu, o usuario fique restrito a digitar somente numeros, assim sendo, o progama recusaria qqr entrada que fosse diferente de numeros inteiros entendeu ? Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Fevereiro 10, 2010 Pra fazer isso você precisa ler como um caractere, por exemplo: int lerDigito() { char c; scanf("%c%*c", &c); if (('0' <= c) && ('9' >= c)) return '0' - c; else { fprintf(stderr, "ERRO: %c não é uma entrada válida\n", c); return -1; } } E outra, pra que tantas variáveis?!?!?! Você nunca usa duas delas ao mesmo tempo! Basta uma variável. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Fevereiro 19, 2010 para emitir um som(beep) só usar o '\a' ! []s Compartilhar este post Link para o post Compartilhar em outros sites