Polmax Posted April 19, 2012 at 05:37 PM Report #450016 Posted April 19, 2012 at 05:37 PM Tenho que fazer isto "lê um carácter e imprime "vogal" ou "consoante" de acordo com o carácter introduzido (note que programa deverá funcionar com maiúsculas e minúsculas)" Não estou a conseguir, como sei sé é vogal ou consoante o.O ? tenho que indicar TODOS os casos ? Faço um switch pra saber se é a,e,i,o,u e se nao for meto logo consoante ?
KiNgPiTo Posted April 19, 2012 at 05:41 PM Report #450018 Posted April 19, 2012 at 05:41 PM Se fizeres um cast para int de um char, ficas com o valor decimal do caracter. Depois basta fazeres as comparacoes (utilizando a tabela Ascii: http://pt.wikipedia.org/wiki/ASCII). Exemplo: char caracter='a'; int valorDecimal=(int)caracter; em valorDecimal irá ficar o valor 97, se metesse um A seria 65...
Localhost Posted April 19, 2012 at 05:46 PM Report #450020 Posted April 19, 2012 at 05:46 PM Solução: vector + ciclo for + criatividade.. char vogais[] = {'a', 'e', 'i', 'o', 'u'}, ch; bool flag = false; scanf ("%c", &ch); for (int k = 0; k < 5; k++) if (ch == vogais[k]) { flag = true; printf ("Vogal."); break; } if (!flag) printf ("Consoante."); here since 2009
pmg Posted April 19, 2012 at 05:48 PM Report #450021 Posted April 19, 2012 at 05:48 PM Faço um switch pra saber se é a,e,i,o,u e se nao for meto logo consoante ? Sim, muito boa ideia! Mas ... e se for um espaco, ou uma virgula ...? LOL la estou eu a complicar 🙂 What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Localhost Posted April 19, 2012 at 05:50 PM Report #450022 Posted April 19, 2012 at 05:50 PM Sim, muito boa ideia! Mas ... e se for um espaco, ou uma virgula ...? LOL la estou eu a complicar 🙂 Quando o enunciado diz que apenas se vai poder imprimir "Vogal" ou "Consoante" significa que podemos excluir todos os outros caracteres. here since 2009
Polmax Posted April 19, 2012 at 05:56 PM Author Report #450027 Posted April 19, 2012 at 05:56 PM Sim , é algo simples não tenho que pensar nestes casos de virgulas etc. Local por ser um problema básico não nos é permitido usar vectores só estruturas de controle e coisas simples pk é um problema quase do inicio do semestre. E o que disse o kingpinto de fazer um cast , não vou na mesma ter que comparar o resultado deste cast e ver se o numero é igual a um dos que correspondem as vogais na tabela ASCII ?
petvetbr Posted April 19, 2012 at 05:58 PM Report #450030 Posted April 19, 2012 at 05:58 PM para evitar ter que comparar maiúsculas e minúsculas, você pode também usar as funçoes toupper ou tolower() para só ter que comparar com o código de maiúsculas e minúsculas de acordo com o que for utilizado. http://www.tutorialspoint.com/ansi_c/c_toupper.htm Para filtrar teclas nao alfabeticas você pode fazer uma pré-filtragem antes de entrar na sua comparacao, descartando caracteres menores que 65 e maiores que 122 (contando que você não tenha que lidar com os acentuados) Fernando Lage Bastos - MCP/MCTS/MCPD
pmg Posted April 19, 2012 at 06:03 PM Report #450031 Posted April 19, 2012 at 06:03 PM Os casts, em C, em muitos casos, sao desnecessarios para nao dizer errados. O compilador faz as conversoes necessarias automaticamente. Os casts sao necessarios apenas quando a conversao é precisa e o compilador nao "consegue adivinhar", por exemplo, para chamar funcoes declaradas em <ctype.h> ch = toupper((unsigned char)ch); Sem o cast, o que o compilador faria era converter directamente o valor para tipo int; com o cast faz duas conversoes: uma explicita para tipo unsigned char, e outra implicita para int. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Polmax Posted April 19, 2012 at 06:08 PM Author Report #450034 Posted April 19, 2012 at 06:08 PM Ah assim gosto , e sim acho que ele tinha razão se já se faz a conversão automaticamente não seria necessário , obrigado 🙂
Localhost Posted April 20, 2012 at 08:28 AM Report #450092 Posted April 20, 2012 at 08:28 AM Se não podes fazer da maneira que eu disse (o que é ridículo visto que é a maneira mais simples) vais ter que testar todos os casos. Não sei para que é que precisas de converter para um código ascii visto que um char já é um número em si. here since 2009
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now