Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Mover ciertos caracteres a una variable

Estas en el tema de Mover ciertos caracteres a una variable en el foro de C/C++ en Foros del Web. Buenas tardes, estoy intentando desarrollar un programa en el que de una palabra ( char ), todos los caracteres que sean letras consonantes y estén ...
  #1 (permalink)  
Antiguo 01/01/2012, 09:22
 
Fecha de Ingreso: diciembre-2011
Mensajes: 14
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Mover ciertos caracteres a una variable

Buenas tardes, estoy intentando desarrollar un programa en el que de una palabra (char), todos los caracteres que sean letras consonantes y estén antes de la primera vocal, se omitan del char y se pasen a una variable; imprimiéndose como dato de salida la palabra insertada como dato de entrada con todas las letras que han pasado a la variable al final de la misma junto a otro caracter adicional (@ por ejemplo).

Véase ahora un ejemplo respecto a lo consultado:

Cita:
ENTRADA: prueba
SALIDA: uebapr@
¿Cómo puedo programar eso?

Un cordial saludo y feliz 2012.
Atentamente, Ángel Manuel.
  #2 (permalink)  
Antiguo 01/01/2012, 19:06
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Mover ciertos caracteres a una variable

Utiliza la libreria <string.h> para este fin. Como se puede ver ya tienes dos variables para la cadena de ENTRADA y SALIDA respectivamente, pues ahora tienes que agregar una más que sea un AUXILIAR; este con el siguiente fin: lees caracter a caracter ENTRADA y mientras no leas una vocal lo vas almacenando en AUXILIAR, cosa que cuando leas una vocal apliques '\0' a AUXILIAR para indicarle que terminó con el, luego los siguientes caracteres de ENTRADA lo mandas a SALIDA y cuando termines de recorrer ENTRADA, agregas los elementos de AUXILIAR más tu carácter adicional y '\0' para indicar que terminó, de ahí ya puedes imprimirlo si lo necesitas o hacer otras operaciones. Para recorrer la cadena usa un "for" utilizando la función la longitud que te da la librería que te mencioné al inicio, sabiendo que una cadena en C/C++ es un vector.

Si tienes alguna duda me lo pasas.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #3 (permalink)  
Antiguo 03/01/2012, 11:24
 
Fecha de Ingreso: diciembre-2011
Mensajes: 14
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Respuesta: Mover ciertos caracteres a una variable

Cita:
Iniciado por CapacProg Ver Mensaje
Utiliza la libreria <string.h> para este fin. Como se puede ver ya tienes dos variables para la cadena de ENTRADA y SALIDA respectivamente, pues ahora tienes que agregar una más que sea un AUXILIAR; este con el siguiente fin: lees caracter a caracter ENTRADA y mientras no leas una vocal lo vas almacenando en AUXILIAR, cosa que cuando leas una vocal apliques '\0' a AUXILIAR para indicarle que terminó con el, luego los siguientes caracteres de ENTRADA lo mandas a SALIDA y cuando termines de recorrer ENTRADA, agregas los elementos de AUXILIAR más tu carácter adicional y '\0' para indicar que terminó, de ahí ya puedes imprimirlo si lo necesitas o hacer otras operaciones. Para recorrer la cadena usa un "for" utilizando la función la longitud que te da la librería que te mencioné al inicio, sabiendo que una cadena en C/C++ es un vector.

Si tienes alguna duda me lo pasas.
Buenas tardes, ¿pero cómo añado a la variable auxiliar los respectivos caracteres que contiene la variable de entrada?

Saludos.
  #4 (permalink)  
Antiguo 03/01/2012, 11:38
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Mover ciertos caracteres a una variable

Las cadenas de caracteres en C/C++ son vectores, puedes hacer esto, (ojo: sólo como referencia)

Código C++:
Ver original
  1. //...
  2. //...
  3. int p=0;
  4. for(int i=0;i<strlen(ENTRADA);i++)
  5. {
  6.     switch(ENTRADA[i])
  7.     {
  8.         case 'a':
  9.         case 'e':
  10.         case 'i':
  11.         case 'o':
  12.         case 'u':
  13.            break;
  14.         default:
  15.            AUXILIAR[p++]=ENTRADA[i];
  16.            break;
  17.     }
  18. }
  19. AUXILIAR[p]='\0';
  20. //...
  21. //...
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #5 (permalink)  
Antiguo 03/01/2012, 15:03
 
Fecha de Ingreso: diciembre-2011
Mensajes: 14
Antigüedad: 12 años, 3 meses
Puntos: 0
Exclamación Respuesta: Mover ciertos caracteres a una variable

Cita:
Iniciado por CapacProg Ver Mensaje
Las cadenas de caracteres en C/C++ son vectores, puedes hacer esto, (ojo: sólo como referencia)

Código C++:
Ver original
  1. //...
  2. //...
  3. int p=0;
  4. for(int i=0;i<strlen(ENTRADA);i++)
  5. {
  6.     switch(ENTRADA[i])
  7.     {
  8.         case 'a':
  9.         case 'e':
  10.         case 'i':
  11.         case 'o':
  12.         case 'u':
  13.            break;
  14.         default:
  15.            AUXILIAR[p++]=ENTRADA[i];
  16.            break;
  17.     }
  18. }
  19. AUXILIAR[p]='\0';
  20. //...
  21. //...
Buenas noches; siendo este el código del switch, me aparece un error que indica "Token no encontrado":

Código C++:
Ver original
  1. for(int i=0; i<strlen(entrada); i++)
  2.         {
  3.             switch(entrada[i])
  4.                    {
  5.                            case "a":
  6.                                 case "e":
  7.                                case "i":
  8.                                case "o":
  9.                                case "u":
  10.                     break;
  11.  
  12.                                default:
  13.                                         auxiliar[p++]=entrada[i];
  14.                                         break;
  15.         }
  16.         }

¿Hay algo incorrecto en el código?
  #6 (permalink)  
Antiguo 04/01/2012, 05:24
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Mover ciertos caracteres a una variable

Los caracteres se encierran con apóstrofes y no con comillas como Ud. lo usa en su código. Motivo por el cual de su error al ejecutar.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #7 (permalink)  
Antiguo 04/01/2012, 05:31
 
Fecha de Ingreso: diciembre-2011
Mensajes: 14
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Mover ciertos caracteres a una variable

Cita:
Iniciado por CapacProg Ver Mensaje
Los caracteres se encierran con apóstrofes y no con comillas como Ud. lo usa en su código. Motivo por el cual de su error al ejecutar.
Buenos días; finalmente solucioné el problema reescribiendo el bloque switch, pero quiero que los caracteres que han pasado a la variable auxiliar se eliminen de la de entrada además de querer que el bloque for finalice en cuanto se detecte la primera vocal y no cuando recorra todos los caracteres de la variable de entrada. Dicho esto, para intentar finalizar la actividad del for en cuanto se detectase la primera vocal he intentado añadir en dicho bloque la correspondiente condición pero la aplicación falla entonces.

Un saludo

Última edición por amgc; 04/01/2012 a las 07:27
  #8 (permalink)  
Antiguo 04/01/2012, 17:13
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Mover ciertos caracteres a una variable

Esa parte la puede sanar utilizando un break, también puede ser con una variable booleana, entre muchas otras.
Creo que por el resto que menciona Ud. debe de continuar revisando como funcionan los vectores y cadenas en C/C++. Si tiene dudas coloque su implementación para revisarla si haya fallos; las personas aquí no resolvemos problemas desde cero.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #9 (permalink)  
Antiguo 04/01/2012, 17:31
 
Fecha de Ingreso: diciembre-2011
Mensajes: 14
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Respuesta: Mover ciertos caracteres a una variable

Cita:
Iniciado por CapacProg Ver Mensaje
Esa parte la puede sanar utilizando un break, también puede ser con una variable booleana, entre muchas otras.
Creo que por el resto que menciona Ud. debe de continuar revisando como funcionan los vectores y cadenas en C/C++. Si tiene dudas coloque su implementación para revisarla si haya fallos; las personas aquí no resolvemos problemas desde cero.
Buenas noches, a continuación le muestro el código que estoy utilizando, por el cual debería finalizarse el bloque for en cuanto se detectase una vocal y no se pasasen más consonantes a la variable auxiliar (acción que ocurría dentro del bloque for). Por otra parte, no sé cómo podría eliminar esos caracteres que pasan a la variable auxiliar de la de entrada.

Además he intentado reemplazar el switch por un enunciado (bloque) if-else pero en ese caso, nada pasa a la variable auxiliar.

Dicho esto, expongo el código:

Código C++:
Ver original
  1. int p=0;
  2.         for(int i=0;i<strlen(entrada);i++)
  3.         {
  4.             switch(entrada[i])
  5.             {
  6.                 case 'a':
  7.                 case 'e':
  8.                 case 'i':
  9.                 case 'o':
  10.                 case 'u':
  11.                     break;
  12.  
  13.                 default:
  14.                     auxiliar[p++]=entrada[i];
  15.                     break;
  16.             }
  17.         }
  18.  
  19.         auxiliar[p]='\0';
  20.  
  21.         cout << entrada << auxiliar << "ay";

Muchas gracias por su ayuda y espero ser respondido lo antes posible.
Un cordial saludo.

Última edición por amgc; 06/01/2012 a las 05:54 Razón: Informar sobre otra opción que había tomado para resolver el problema, la cual ha fallado también.
  #10 (permalink)  
Antiguo 06/01/2012, 19:51
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Mover ciertos caracteres a una variable

Para pasar los caracteres de Auxiliar a Salida realiza otro for por la cantidad de elementos que tiene que si no te haz dado cuenta es p en cada iteración lo pasas a la variable Salida.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #11 (permalink)  
Antiguo 07/01/2012, 05:37
 
Fecha de Ingreso: diciembre-2011
Mensajes: 14
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Respuesta: Mover ciertos caracteres a una variable

Buenos días, pero si mi inconveniente es que break, que debería ejecutarse para suspender el for en cuanto se detectase la primera vocal, no funciona; y no es mi inconveniente el no saber cómo programar el paso de caracteres desde la variable auxiliar a la de salida.

Por otra parte, quisiera saber cómo eliminar de la variable de entrada aquellos caracteres (l.consonantes) que pasan a la variable auxiliar.

[NOTA: El código utilizado es el de mi anterior respuesta]

Espero una pronta respuesta, agradeciéndole además su ayuda y atención.

Reciba un cordial saludo.
Atentamente, Ángel Manuel.

Etiquetas: c++
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:39.