Contar vocales de una frase usando RECURSIVIDAD c++

Cerrado
JulyVaBe - 21 abr 2020 a las 05:00
 JulyVaBe - 21 abr 2020 a las 23:11
Hola,

Tengo este código en c++ para contar las vocales de una frase utilizando el método recursivo. No me da el número de vocales al final y no se cual pueda ser mi error.

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int vocales(string cadena, int i)
{
//i=posición de cada carácter
int cant_vocales;//Contabilizador de vocales
string c;
c=cadena[i];

if(cadena.length()==0)
{
return 0;
}
else
{
if(c=="A"||c=="a"||c=="E"||c=="e"||c=="I"||c=="i"||c=="O"||c=="o"||c=="U"||c=="u")
{
return cant_vocales+=vocales(cadena, i+1);
}
else
{
vocales(cadena, i+1);
}
}
}

int main()
{
string cadena;
int resultado;

cout<<"Ingrese una frase: ";
getline(cin, cadena);

resultado=vocales(cadena, 0);
cout<<"Hay "<<resultado<<" vocales en la frase ingresada";

}

1 respuesta

misterdekus Mensajes enviados 474 Fecha de inscripción miércoles, 10 de enero de 2018 Estatus Miembro Última intervención miércoles, 28 de agosto de 2024 127
21 abr 2020 a las 23:04
Hola JulyVaBe

ESTE ES TU CODIGO LIGERAMENTE MODIFICADO , PERO FUNCIONAL

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int cant_vocales=0;//Contabilizador de vocales

int vocales(string cadena, int i)
{
    //i=posición de cada carácter
    char c;
    c=cadena[i];
    
    if(cadena.length()==0)
    {
        return 0;
    }
    else
    {
        if(c=='A'||c=='a'||c=='E'||c=='e'||c=='I'||c=='i'||c=='O'||c=='o'||c=='U'||c=='u') 
        {
            cant_vocales++;
            vocales(cadena, i+1);
        }
        else
        {
            if ( c != '\0' )
                vocales(cadena,i+1);
        } 
    }
    return cant_vocales;
}

int main()
{
    string cadena;
    int resultado;

    cout<<"Ingrese una frase: ";
    getline(cin, cadena);

    resultado=vocales(cadena, 0);
    cout<<"Hay "<<resultado<<" vocales en la frase ingresada";
}


Saludos
2
Woow, eran unos aspectos mínimos, si me ha servido, muchísimas gracias
0