Programação Progressiva
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Programação Progressiva

Fórum para dúvidas dos sites: Programação Progressiva, Java Progressivo, C Progressivo


Você não está conectado. Conecte-se ou registre-se

contar vogais por funcoes

2 participantes

Ir para baixo  Mensagem [Página 1 de 1]

1contar vogais por funcoes  Empty contar vogais por funcoes Qua Ago 19, 2015 6:17 pm

neogalax



Código:
/*Fazer uma função que conte o numero de vogais numa string
passada por parâmetro. Fazer a chamada no main. A função deve
retornar a quantidade de vogais.*/


#include <iostream>
#include <conio.h>

#define MAX 100

using namespace std;
int conta_vogais(char frase[MAX]);





 main(){
      int frase[MAX];
            cout <<"informne uma frase" << endl;
            cin >> frase[MAX];

    //cout << "numero de vogais" << conta_vogais(frase);
}


int conta_vogais(char frase[MAX]){
        int cont;

                                                        
                                                          
              for (int i=0; i<10; i++){            
              if (frase[i]=='AaEeIiOoUu'){
                cont ++;
            }
            return (cont);

        }
}



Minha função para contar vogais esta correta?  para mim esta a frase na primeira posição vai comparar com as vogais, se tiver ela conta 1, dois vai para a segunda letra
se tiver conta mais 1, correto ?
2) minha função para contar vogais esta correta?  para mim esta a frase na primeira posição vai comparar com as vogais, se tiver ela conta 1, dois vai para a segunda letra
se tiver conta mais 1, correto ?

2contar vogais por funcoes  Empty Re: contar vogais por funcoes Qui Ago 20, 2015 7:08 pm

AbnerRMS



Então, neogalax, aqui você tá tentando comparar um caractere com algo que nem é caractere nem string, no caso "'AaEeIiOoUu'":
Código:
int conta_vogais(char frase[MAX]){
    int cont;

    for (int i=0; i<10; i++){            
        if (frase[i]=='AaEeIiOoUu'){
            cont ++;
        }
        return (cont);

    }
}

Tem que comparar caractere por caractere.

Tipo:
Código:
#include <iostream>
#include <cstring>  // pra usar a função strlen
#include <cctype>   // pra usar a função tolower

#define MAX 100

using namespace std;
int conta_vogais(char frase[]);

int main()
{
    char frase[MAX];

    cout << "informne uma frase" << endl;
    cin >> frase;   // não "frase[MAX]"

    cout << "numero de vogais " << conta_vogais(frase);

    return 0;
}

int conta_vogais(char frase[])
{
    int cont = 0;

    for (int i=0; i < strlen(frase); i++)
    {
        switch(tolower(frase[i]))
        {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                cont++;
        }
    }

    return (cont);
}

Ou assim:
Código:
int conta_vogais(char frase[])
{
    int cont = 0;

    for (int i=0; i < strlen(frase); i++)
    {
        char vogais[] = "AaEeIiOoUu";

        for (int j=0; j < strlen(vogais); j++)
        {
            if (frase[i] == vogais[j])
            {
                cont++;
                break;
            }
        }
    }

    return (cont);
}

Ou ainda (com ponteiros):
Código:
int conta_vogais(char *frase)
{
    int cont = 0;

    while(*frase)
    {
        char vogais[] = "AaEeIiOoUu";

        for (int i=0; i < strlen(vogais); i++)
        {
            if (*frase == vogais[i])
            {
                cont++;
                break;
            }
        }

        frase++;
    }

    return (cont);
}

E acho que há outras formas, é só usar a criatividade. Very Happy

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos