Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: bryanrz96 en 28 Octubre 2015, 19:42 pm



Título: Programa que elimine vocales
Publicado por: bryanrz96 en 28 Octubre 2015, 19:42 pm
Código
  1.  
Buen dia!
Tengo una duda
quiero crear un "programa" que me elimine las vocales de una palabra, solo d una palabra, no quiero que me las reemplace por espacios, solo q las elimine, por ejemplo:
inserir palabra: murcielago
mrclg

De antemano gracias.
:)

Código
  1. void invertir (char p [256])
  2. {
  3.    int i;
  4.    int largo=strlen(p)-1;
  5.    cout<<("al reves:\n");
  6.    for(i=0; i<=largo; i++)
  7.    {
  8.        if (p[i]=='a' || p[i]=='e' ||  p[i]=='i' ||p[i]=='o'||p[i]=='u')
  9.        {
  10.  
No se como mas seguir!  el otro for




Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Programacion C++
Publicado por: engel lex en 28 Octubre 2015, 19:44 pm
que tienes hecho?

modifica el titulo, el mismo debe ser descriptivo "programacion c++" en el foro de "programación c/c++" no es descriptivo


Título: Re: Programa eliminar vocales
Publicado por: bryanrz96 en 28 Octubre 2015, 19:47 pm
que tienes hecho?

modifica el titulo, el mismo debe ser descriptivo "programacion c++" en el foro de "programación c/c++" no es descriptivo

Disculpa, no tengo nada, nos dieron la teoria y nos dijeron que hagamos ese ejercicio, no se por donde empezar.
Uso C++

Gracias


Título: Re: Programacion C++
Publicado por: engel lex en 28 Octubre 2015, 19:48 pm
no tienes ni si quiera el main?

el foro es para resolver dudas puntuales, así que por favor puntualiza...

Repito, cambia el titulo... usa el boton "modificar" del primer post para modificar el titulo del tema


Título: Re: Programacion C++
Publicado por: bryanrz96 en 28 Octubre 2015, 19:57 pm
no tienes ni si quiera el main?

el foro es para resolver dudas puntuales, así que por favor puntualiza...

Repito, cambia el titulo... usa el boton "modificar" del primer post para modificar el titulo del tema

Código
  1. void invertir (char p [256])
  2. {
  3.    int i;
  4.    int largo=strlen(p)-1;
  5.    cout<<("al reves:\n");
  6.    for(i=0; i<=largo; i++)
  7.    {
  8.        if (p[i]=='a' || p[i]=='e' ||  p[i]=='i' ||p[i]=='o'||p[i]=='u')
  9.        {

me falta el otro for, no se si sea correcto


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Programa que elimine vocales
Publicado por: engel lex en 28 Octubre 2015, 20:02 pm
tienes que crear otro char donde lo vas llenando con las letras que no sean vocales tienes todo practicamente bien...

viste que si tenías algo... que es muy diferente a nada...


Título: Re: Programa que elimine vocales
Publicado por: bryanrz96 en 28 Octubre 2015, 20:09 pm
Código
  1.  
tienes que crear otro char donde lo vas llenando con las letras que no sean vocales tienes todo practicamente bien...

viste que si tenías algo... que es muy diferente a nada...
Código
  1. void invertir (char p [256])
  2. {
  3.    int i;
  4.    int largo=strlen(p)-1;
  5.    cout<<("al reves:\n");
  6.    for(i=0; i<=largo; i++)
  7.    {
  8.        if (p[i]=='a' || p[i]=='e' ||  p[i]=='i' ||p[i]=='o'||p[i]=='u')
  9.        {
  10.            p[i]=' ';
  11.        }
  12.    }
  13.    for(i = largo; i >= 0; --i)
  14.    {
  15.        cout<<("%c",p[i]);
  16.    }
  17. }
  18.  
  19.  
Me da un error al final, no me ejecuta.
ayuda please!


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Programa que elimine vocales
Publicado por: engel lex en 28 Octubre 2015, 20:15 pm
que error? en que linea? copia y pega del compilador, es importante leer los errores


Título: Re: Programa que elimine vocales
Publicado por: bryanrz96 en 28 Octubre 2015, 20:18 pm
que error? en que linea? copia y pega del compilador, es importante leer los errores
Código
  1. void invertir (char p [256])
  2. {
  3.    int i;
  4.    int largo=strlen(p)-1;
  5.    cout<<("al reves:\n");
  6.    for(i=0; i<=largo; i++)
  7.    {
  8.        if (p[i]=='a' || p[i]=='e' ||  p[i]=='i' ||p[i]=='o'||p[i]=='u')
  9.        {
  10.            p[i]=' ';
  11.        }
  12.    }
  13.    for(i = largo; i >= 0; --i)
  14.    {
  15.        cout<<("%c",p[i]);
  16.    }
  17. }

El error me lo da en la ultima impresion.


Título: Re: Programa que elimine vocales
Publicado por: engel lex en 28 Octubre 2015, 20:35 pm
te explico... es importante que indiques el error, ¿por qué? porque el error explica el error que hubo


Título: Re: Programa que elimine vocales
Publicado por: Slava_TZD en 28 Octubre 2015, 20:50 pm
Código
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <string>
  4.  
  5. bool IsParenthesesOrDash(char c)
  6. {
  7.    switch(c)
  8.    {
  9.    case 'a':
  10.    case 'e':
  11.    case 'i':
  12.    case 'o':
  13.    case 'u':
  14.        return true;
  15.    default:
  16.        return false;
  17.    }
  18. }
  19.  
  20. int main()
  21. {
  22.    std::string str("murcielago");
  23.    str.erase(std::remove_if(str.begin(), str.end(), &IsParenthesesOrDash), str.end());
  24.    std::cout << str << std::endl;
  25. }

https://stackoverflow.com/questions/5891610/how-to-remove-characters-from-a-string


Título: Re: Programa que elimine vocales
Publicado por: bryanrz96 en 28 Octubre 2015, 20:57 pm
te explico... es importante que indiques el error, ¿por qué? porque el error explica el error que hubo

Código
  1. void invertir (char p [256])
  2. {
  3.    int i;
  4.    int largo=strlen(p)-1;
  5.    cout<<("al reves:\n");
  6.    for(i=0; i<=largo; i++)
  7.    {
  8.        if (p[i]=='a' || p[i]=='e' ||  p[i]=='i' ||p[i]=='o'||p[i]=='u')
  9.        {
  10.            p[i]=' ';
  11.        }
  12.    }
  13.    for(i = largo; i >= 0; --i)
  14.    {
  15.        cout<<("%c",p[i]);
  16.    }
  17. }

Me dice "left operand of comma operator has no effect."

No se.


Título: Re: Programa que elimine vocales
Publicado por: engel lex en 28 Octubre 2015, 21:00 pm
estás formando el cout como si fuera un printf

así se usa
Código
  1. cout<<p[i];


Título: Re: Programa que elimine vocales
Publicado por: bryanrz96 en 28 Octubre 2015, 21:03 pm
te explico... es importante que indiques el error, ¿por qué? porque el error explica el error que hubo
Código
  1. void invertir (char p [256])
  2. {
  3.    int i;
  4.    int largo=strlen(p)-1;
  5.    cout<<("al reves:\n");
  6.    for(i=0; i<=largo; i++)
  7.    {
  8.        if (p[i]=='a' || p[i]=='e' ||  p[i]=='i' ||p[i]=='o'||p[i]=='u')
  9.        {
  10.            p[i]=' ';
  11.        }
  12.    }
  13.    for(i = largo; i >= 0; --i)
  14.    {
  15.        cout<<("%c",p[i]);
  16.    }
  17. }

me dice lo siguiente en error de 
Código
  1. cout<<("%c",p[i]);
"left operand of comma operator has no effect. , que hago?


Título: Re: Programa que elimine vocales
Publicado por: bryanrz96 en 28 Octubre 2015, 21:19 pm
Código
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <string>
  4.  
  5. bool IsParenthesesOrDash(char c)
  6. {
  7.    switch(c)
  8.    {
  9.    case 'a':
  10.    case 'e':
  11.    case 'i':
  12.    case 'o':
  13.    case 'u':
  14.        return true;
  15.    default:
  16.        return false;
  17.    }
  18. }
  19.  
  20. int main()
  21. {
  22.    std::string str("murcielago");
  23.    str.erase(std::remove_if(str.begin(), str.end(), &IsParenthesesOrDash), str.end());
  24.    std::cout << str << std::endl;
  25. }

https://stackoverflow.com/questions/5891610/how-to-remove-characters-from-a-string

Me parece bien, pero yo quiero introducir la palabra, mediante el teclado., no de manera directa en el codigo.
Gracias


Título: Re: Programa que elimine vocales
Publicado por: furciorifa en 6 Noviembre 2015, 03:03 am
Si el problema es restrictivo en cuanto usar nada más arreglos puedes crear 2 uno del mismo tamaño que el primero para pasar sólamente las consonantes es decir

A N D R E S
en el otro arreglo sería

N D R S

esa sería una forma claro usando un sólo arreglo también podrías con 2 ciclos anidados para asignar al mismo las consonantes sólamente,

si fuese de cualquier forma la entrada la recorres e imprimes sólamente las consonantes.