Ir para conteúdo

POWERED BY:

Arquivado

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

Acma

bloaquear letras em menu de opções

Recommended Posts

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

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

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

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

×

Informação importante

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