Programa en C++

jurj0asjur

Hola estoy intentando hacer un programa que al leer un "ie" o un "ue" añada una h delante en una frase.

Es decir si el programa me lee esta frase:

No me creo que la iena se comiese la ierba del uerto.

Todas las "h" que faltan me las ponga.

Me podeis ayudar aunk sea algo.

Gracias de antemano

uplink

Dinos que duda tienes y te ayudaremos. Si quieres que te haga el programa... gratis no lo voy a hacer... si estas dispuesto a "donar" un módico importe xDD mandame un mensaje privado.

Pon tu duda y hablamos!

jurj0asjur

haber necesito hacerlo con strings

lo k pasa esq no se aislar la palbra y ponerle una h delante

esa es una parte pequeña del programa y el resto mas o menos lo tengo resuelto pero me kedo enganxado en aisalar la palabra mal escrita y añadirle la h

dr_Rouman

Lo más sencillo que pienso es...

recorrer la cadena y cuando se encuentre "ie" o "ue", pues, usando una cadena auxiliar (con un carácter más), la vas copiando, y en la posición en la que deba ir la "h" (que puedes averiguar cuando has encontrado "ie" o "ue"), pues pones la correspondiente letra ^.

También puedes fragmentar la cadena, pero creo que así es bastante bastante más complicado.

ElRuso

Pues no se como sera en C++, pero le logica seria, cortar cada palabra por donde esta el espacio.
Y examinar cada palabara una por una.

L

Pasa el std::string a char *.
Recorre la frase entera caracter por caracter, entendiendo que, cuando encuentres " " (es decir, espacio), sabras que en un array dinamico tendras la palabra recien leida. Entonces analizala, y, en caso de ser candidatas, añade la H y rescribe el string.

  • Para pasar de string a char, hay varios metodos, pero uno de ellos es usar el metodo c_str() (p.e: std::string polla = "lol"; printf("Yo digo que %s!\n", polla.c_str());
  • Pegate una googleada para conocer las propiedades enteras de los string. De hecho, son encapsulaciones de cadenas de char.
  • Puedes crear chars dinamicos con reserva de memoria mediante mallocs. (p.e: char lol; lol = (char)malloc(TAMAÑO*sizeof(char)); donde TAMAÑO es una constante definida o un numero mas o menos grande, no mas de 25 caracteres, diria que es suficiente para palabras "normales").
  • Piensa en recorrer la frase entera, pasada a chars, caracter por caratcer i, solo al principio o despues de un espacio, mirar si el primer caracter que lees es una "i" o una "u". Si es asi, mira el segundo caracter, i en caso de coincidir, puedes hacer varias cosas, como por ejemplo guardar la palabra para una posterior recolecta en una lista o lo que quieras, el tema es que puedas hacer algo como: palabra = "h"+palabra;
  • Solo te quedara reconstruir la frase inicial con las palabras que ya tienes modificadas, a no ser que hayas modificado "on time" la frase original.

Hugs,

Light.

LOc0

Yo lo haría así:


#include <stdio.h>
#include <string.h>

#define MAX_LONGITUD 2048

int main(int argc, char *argv[])
{
char corregida[MAX_LONGITUD];
int conta, conta2, longitud;


if(argc==2)
{
 
 longitud=strlen(argv[1]);

 for(conta=0, conta2=0; conta<=longitud && conta2<=MAX_LONGITUD; conta++, conta2++)
 {
             if(conta+1<longitud && ((conta-1>=0 && argv[1][conta-1]==' ') || conta==0) && (argv[1][conta]=='i' || argv[1][conta]=='u') && argv[1][conta+1]=='e')
                     corregida[conta2++]='h';
                                  
                                  
             corregida[conta2]=argv[1][conta];
 }


 printf("\n\nCadena original: %s\n\nCadena corregida: %s\n\n", argv[1], corregida);

}
 
return 0;

}

[/i]

Para usarlo:

nombre_binario "No me creo que la iena se comiese la ierba del uerto."

Salu2 ;)

kas

Yo creo que lo mas facil seria:

1) Matriz de strings.

2) Descomponer la frase por palabras en la matriz.

3) Palabra por palabra, comprabar su correccion

4) Hacer el string a partir de la matriz.

De todas maneras seguro que hay alguna libreria para agilizar el tratamiento de strings, porque si no puede ser bastante pastel..

JuAn4k4

la la la, copiar una string en otra, y cuando encuentres una 'i' o una 'u' , haces un if que mire el siguiente, y si es lo que buscas metes una h en el de abajo, y despues metes la que acabas de leer y continuas.

int j,i; char *s;

j=0;
for ( i=0; i<strlen(s); i++)
{
if ( i+1 <= strlen(s) )
{
if ( s[i+1] == 'e' && s == 'i' ) || ( s[i+1] =='e' && s == 'u' )
{ aux[j++]='h'; }
}
aux[j++]= s;
}

Soltrac

Joder si q sois complicados xDDD

string s = "Tu frase";

for(int i=0;i<s.lenght()-1;++i) {
if((s == 'u' && s[i+1] == 'e') || (s=='i' && s[i+1] == 'e'))
s.insert(i,'h');
}

Vamos, no tengo aki en el curro compilador de c++, pero....no deberia fallar no? XDDD

Usuarios habituales

  • Soltrac
  • JuAn4k4
  • LOc0
  • Lightworker
  • ElRuso
  • jurj0asjur
  • uplink