Ir ao conteúdo
  • Cadastre-se

C++ programa que diz se a letra digitada é vogal ou não


Ir à solução Resolvido por Lucca Rodrigues,

Posts recomendados

1) Oi, to aprendendo C++ e decidi fazer um programa que diz se a letra digitada é vogal ou não. Fiz primeiramente com IF-ELSE mas não deu certo, então busquei uma alternativa e achei o SWITCH e ficou assim

#include <iostream>

using namespace std;

int main()

{
    // declaração de variáveis
    char letra1;
      letra1 = 'a', 'e', 'i','o', 'u';
      
    // entrada de dados
    cout<<"digite uma letra: \n";
    cin>> (letra1);
    
    //saída de dados
     switch (letra1)
        {
        case 'a':
            cout << "isso é vogal";
            break;
        case 'e':
            cout << "isso é vogal";
            break;
        case 'i':
            cout << "isso é vogal";
            break;
        case 'o':
            cout << "isso é vogal";
            break;
        case 'u':
            cout << "isso é vogal";    
        } 
    
    

    return 0;
}

 Por enquanto se for vogal ele diz ao usuário porém se for consoante ele não fala nada, teria eu que fazer case com todas as consoantes?

 

2) em IF-ELSE ficou desse jeito mas independente da letra ele retorna vogal

#include <iostream>

using namespace std;

int main()
{
    // declaração de variáveis
    char letra1;
      letra1 = 'a', 'e', 'i','o', 'u';
      
     // entrada de dados
    cout<<"digite uma letra: \n";
    cin>> (letra1);
    
    //saída de dados
    if (letra1 == 'a', 'e', 'i','o', 'u')
    
     cout<<"vogal";
    
    else 
    
     cout<<"consoante";

    return 0;
}

 

Como posso melhorar isso? acredito que usando SWITCH no lugar de IF-ELSE estou só indo por um caminho errado

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@LucasrodriguesP

6 minutos atrás, LucasrodriguesP disse:

2) em IF-ELSE ficou desse jeito mas independente da letra ele retorna vogal

Você tem que comparar letra1 com cada vogal, e não simplesmente colocar uma vírgula e as demais vogais como fez instintivamente acredito eu.

if (letra1 == 'a' || letra1 == 'e' || letra1 == 'i' || letra1 == 'o' || letra1 == 'u')
    cout <<"vogal";
else 
    cout<<"consoante";

 

8 minutos atrás, LucasrodriguesP disse:

Por enquanto se for vogal ele diz ao usuário porém se for consoante ele não fala nada, teria eu que fazer case com todas as consoantes?

Não. Você pode recorrer ao default:

switch (letra1)
{
    case 'a':
        cout << "isso eh vogal";
    break;
    case 'e':
        cout << "isso eh vogal";
    break;
    case 'i':
        cout << "isso eh vogal";
    break;
    case 'o':
        cout << "isso eh vogal";
    break;
    case 'u':
        cout << "isso eh vogal";  
    break;
    default:
        cout << "isso eh consoante"; 
} 

Se o controle não for transferido pra nenhum case, será transferido para default.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@LucasrodriguesP Fica mais enxuto com if.

Inclusive se as instruções depois dos case's forem iguais, pode resumir:

switch (letra1)
{
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
        cout << "isso eh vogal";  
    break;
    default:
        cout << "isso eh consoante"; 
} 

Mas ainda dá mais linhas que usar if.

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...