Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dark_link00 en 7 Junio 2014, 19:43 pm



Título: Cambiar vocales a 2 cadenas
Publicado por: dark_link00 en 7 Junio 2014, 19:43 pm
Mi programa tiene que leer 2 cadenas  , sacar la primera y la ultima vocal de cada cadena y despues cambiarlas
osea vocales de la cadena 1 a la cadena 2 y viceversa , alguien que me pueda orientar un poco?
solo consigo que copee la primera pero no la ultima , gracias!


Título: Re: Cambiar vocales a 2 cadenas
Publicado por: rir3760 en 8 Junio 2014, 16:40 pm
Cuando tengas una duda con uno de tus programas por favor publica el código fuente de este, la idea es demostrar un esfuerzo significativo. De no hacerlo el tema puede ser cerrado si se considera que es una petición de código fuente "en bandeja".

También debes indicar el lenguaje de programación ya que la aproximación a tomar depende de este.

En el caso de C ...

----

El programa que comentas es relativamente fácil, la parte mas complicada es buscar el primer y ultimo carácter que cumplan con el criterio indicado, para ello hay varias aproximaciones (por ejemplo una sentencia de selección switch, funciones parte de la biblioteca estándar de C como strcspn o sscanf, etc.).

Una forma sencilla consiste en utilizar la función strchr en la forma strchr("set", caracter) para conocer si el carácter en cuestión forma parte del set (conjunto) indicado.

Un ejemplo del uso de esa función para encontrar la primera y ultima vocal de una cadena es:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(void)
  6. {
  7.   char *linea = "sta es solo una cadena de pruebA";
  8.   int i;
  9.   int j;
  10.   int k;
  11.  
  12.   j = -1; /* centinela */
  13.   for (i = 0; linea[i] != '\0'; i++)
  14.      if (strchr("aeiouAEIOU", linea[i]) != NULL){
  15.         if (j == -1)
  16.            j = i;
  17.         k = i;
  18.      }
  19.  
  20.   if (j != -1)
  21.      printf("Primera y ultima vocal: %c, %c\n", linea[j], linea[k]);
  22.  
  23.   return EXIT_SUCCESS;
  24. }

Con el resto (analizar las dos cadenas y realizar el intercambio si aplica) no debes tener problemas.

Un saludo