Programa que elimine vocales

Iniciado por bryanrz96, 28 Octubre 2015, 19:42 PM

0 Miembros y 2 Visitantes están viendo este tema.

Slava_TZD

Código (cpp) [Seleccionar]
#include <iostream>
#include <algorithm>
#include <string>

bool IsParenthesesOrDash(char c)
{
    switch(c)
    {
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
        return true;
    default:
        return false;
    }
}

int main()
{
    std::string str("murcielago");
    str.erase(std::remove_if(str.begin(), str.end(), &IsParenthesesOrDash), str.end());
    std::cout << str << std::endl;
}


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


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.

bryanrz96

Cita de: 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

Código (cpp) [Seleccionar]
void invertir (char p [256])
{
    int i;
    int largo=strlen(p)-1;
    cout<<("al reves:\n");
    for(i=0; i<=largo; i++)
    {
        if (p[i]=='a' || p[i]=='e' ||  p[i]=='i' ||p[i]=='o'||p[i]=='u')
        {
            p[i]=' ';
        }
    }
    for(i = largo; i >= 0; --i)
    {
        cout<<("%c",p[i]);
    }
}


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

No se.

engel lex

estás formando el cout como si fuera un printf

así se usa
Código (cpp) [Seleccionar]
cout<<p[i];
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

bryanrz96

Cita de: 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
Código (cpp) [Seleccionar]
void invertir (char p [256])
{
    int i;
    int largo=strlen(p)-1;
    cout<<("al reves:\n");
    for(i=0; i<=largo; i++)
    {
        if (p[i]=='a' || p[i]=='e' ||  p[i]=='i' ||p[i]=='o'||p[i]=='u')
        {
            p[i]=' ';
        }
    }
    for(i = largo; i >= 0; --i)
    {
        cout<<("%c",p[i]);
    }
}


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

bryanrz96

Cita de: Slava_TZD en 28 Octubre 2015, 20:50 PM
Código (cpp) [Seleccionar]
#include <iostream>
#include <algorithm>
#include <string>

bool IsParenthesesOrDash(char c)
{
    switch(c)
    {
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
        return true;
    default:
        return false;
    }
}

int main()
{
    std::string str("murcielago");
    str.erase(std::remove_if(str.begin(), str.end(), &IsParenthesesOrDash), str.end());
    std::cout << str << std::endl;
}


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

furciorifa

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.