Jump to content

Saber se um caractere é vogal ou consoante


Recommended Posts

Posted

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 ?

Posted

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

Posted

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!

Posted

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

Posted

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 ?

Posted

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

Posted

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!

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.