Esta clase hace que una palabra la convierta en leguaje ("f") (a cada vocal se le agrega ´f´ mas la misma vocal tiene todas las condiciones pero siempre sigue saliendo la misma palabra si me pudieran ayudar gracias(No se si no recorre la cadena o por que no hace nada).
#include<iostream>
#include<cstring>
using namespace std;
class eFe
{
private:
char cadena[100];
char dest[100];
public:
eFe(char cadena[])
{
strcpy(this -> cadena,cadena);
}
void setCadena(char cadena [])
{
strcpy(this -> cadena,cadena);
}
char* getCadena()
{
return this->cadena;
}
void idiomaf()
{
for(int i=0;i<=strlen(cadena);i++)
{
int k=0;
if(cadena[i]=='a' || cadena[i]=='e' || cadena[i]=='i' || cadena[i]=='o' || cadena[i]=='u')
{
dest[k++]='f';
dest[k++]=cadena[i];
}
else
{
dest[k++]=cadena[i];
}
}
for(int i=0;i<strlen(dest);i++)
cout<<dest[i];
}
};
int main ()
{
eFe e=("hola");
e.idiomaf();
cout<<e.getCadena()<<endl;
return 0;
}
en getCadena retornas cadena en vez de dest, lo que tu quieres, y el void idiomaf está mal, reemplaza esto:
char* getCadena()
{
return this->dest;
}
void idiomaf()
{
int len = strlen(cadena)+1;
int k=0;
for(int i=0;i<=len;i++)
{
if(cadena[i]=='a' || cadena[i]=='e' || cadena[i]=='i' || cadena[i]=='o' || cadena[i]=='u')
{
dest[k++]='f';
dest[k++]=cadena[i];
}
else
{
dest[k++]=cadena[i];
}
}
}
Cita de: Scene en 8 Septiembre 2013, 20:18 PMEsta clase hace que una palabra la convierta en leguaje ("f") (a cada vocal se le agrega ´f´ mas la misma vocal tiene todas las condiciones pero siempre sigue saliendo la misma palabra
Errores hay varios.
Como ya te comento
Stereo no estas retornando la cadena correcta y en el bucle donde agregas las 'f's inicializas el contador "k" dentro del bucle cuando deberías hacerlo fuera de el.
Ademas no necesitas utilizar la función strlen, basta con procesar todos los caracteres antes del '\0' (el delimitador de cadena), en ambas ramas del condicional asignas el carácter procesado lo que resulta en una sentencia repetida y por ultimo una vez generes la cadena en "dest" (que es una variable temporal) la debes copiar en "cadena".
Esa función con los cambios:
void idiomaf()
{
size_t i;
size_t j;
j = 0;
for (i = 0; cadena[i] != '\0'; i++){
if (cadena[i] == 'a' || cadena[i] == 'e' || cadena[i] == 'i' || cadena[i] == 'o' || cadena[i] == 'u')
dest[j++] = 'f';
dest[j++] = cadena[i];
}
dest[j] = '\0';
strcpy(cadena, dest);
}
Un saludo