Boa noite a todos, estou começando agora a programar em linguagem C.e acabo de aprender a usar o comando "Switch" no lugar de "if". Porem o programa mesmo rodando sem erro, apresenta um comportamento estranho.. O programa serve para falar qual o mês, referente ao numero digitado ( de 1 a 12 )Quando digito o primeiro numero o programa já me da instantaneamente o mês. Ex: digitando 2, automaticamente é mostrado fevereiro, mas se isso é mostrado instantaneamente como posso digitar mês 11, 12, ou um numero maior ? segue o código em TXT:
Lista de comentários
DennisRitchie
Olá amigo, o primeiro erro no código é que você declarou a variável numero como do tipo int (inteiro), sendo que você usou a função getch, que server apenas para variáveis do tipo char (caractere). O problema que o programa apresentou.. é que a função getch, só pode ler um caractere...quando você colocar dois caracteres o programa irá mostrar somente o resultado do primeiro caractere digitado...por isso só funciona com um caractere. Nesse caso seria melhor você usar a função scanf, pois assim ela irá capturar o número que você digitar independentemente de quantos algarismos o número tiver. Exemplo: se você digitar o número 12, a função scanf irá ler os algarismos digitados...e logo depois o programa irá mostra o mês referente ao número 12. Eu editei o código..e como foi declarada a variável numero do tipo int, o switch deve receber um valor inteiro..Então eu retirei as aspas simples dos números que ficam depois do case, pois as aspas simples só servem para caracteres. Veja o código editado:
1 votes Thanks 2
diegors11
Obrigado amogo. resposta clara e muito objetiva. fico muito grato!
Lista de comentários
o primeiro erro no código é que você declarou a variável numero como do tipo int (inteiro), sendo que você usou a função getch, que server apenas para variáveis do tipo char (caractere).
O problema que o programa apresentou.. é que a função getch, só pode ler um caractere...quando você colocar dois caracteres o programa irá mostrar somente o resultado do primeiro caractere digitado...por isso só funciona com um caractere.
Nesse caso seria melhor você usar a função scanf, pois assim ela irá capturar o número que você digitar independentemente de quantos algarismos o número tiver.
Exemplo: se você digitar o número 12, a função scanf irá ler os algarismos digitados...e logo depois o programa irá mostra o mês referente ao número 12.
Eu editei o código..e como foi declarada a variável numero do tipo int, o switch deve receber um valor inteiro..Então eu retirei as aspas simples dos números que ficam depois do case, pois as aspas simples só servem para caracteres.
Veja o código editado: