elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cambiar caracteres en cadenas --en C--
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cambiar caracteres en cadenas --en C--  (Leído 9,796 veces)
n_n

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Cambiar caracteres en cadenas --en C--
« en: 30 Octubre 2011, 02:04 am »

hola a todos, quisiera que me ayudaran!
Llevo mucho haciendo esto y no me salen lo he borrado miles de veces!
necesito hacer un programa el cual te lea una cadena y cambie todas las vocales por los numeros del 1 al 9 consecutivamente.

Ejemplo:
Introduces "Foro de elhacker"
y te devuelve: "F1r2 d3 4lh5ck6r"

Se los agradeceria muchisimo!!

GRACIAS!!:D



se me ocurre algo como esto:

Código:
 
x=0;
              w=0;
              printf ("Cadena\n");
              fflush(stdin);
              scanf ("%s", cad);
              while(cad[x] != '\x0')
                        {
                                          if (cad[x]=='a' || cad[x]=='A' || cad[x]=='e' || cad[x]=='E' || cad[x]=='i' || cad[x]=='I' || cad[x]=='o' || cad[x]=='O' || cad[x]=='u' || cad[x]=='U')
                                          {
                                                         w++;
                                          }
                                          x++;
                        }


esto identificaria las vocales y en que posicion estan pero nose como hacer para enumerarlas :S


« Última modificación: 30 Octubre 2011, 02:27 am por n_n » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Cambiar caracteres en cadenas --en C--
« Respuesta #1 en: 30 Octubre 2011, 03:43 am »

esto identificaria las vocales y en que posicion estan pero nose como hacer para enumerarlas
Pues ya lo estas haciendo. Basta con imprimir el valor de la variable "w" justo despues de su incremento.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
n_n

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Cambiar caracteres en cadenas --en C--
« Respuesta #2 en: 30 Octubre 2011, 04:45 am »

Gracias

Pero al poner un
Código:
printf ("%i", w);
aparecerian solo los numeros de las vocales y no dentro de la cadena.

Me explico?
En línea

alx128

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Cambiar caracteres en cadenas --en C--
« Respuesta #3 en: 30 Octubre 2011, 09:13 am »

Ya estas incrementando el valor por cada vocal....Solo te falta igualar el valor de w en la posicion de cada vocal...O sea ahi si enumeras bien w en cada vocal pero no almacenas el numero en la posicion de la vocal algo asi: cadena en la psicion x=w...
Código
  1. if(.......)
  2. {
  3.      w++;
  4.      cad[x]=w;
  5. }
Y despues imprimes toda la cadena afuera del while...
« Última modificación: 30 Octubre 2011, 09:22 am por binaryman » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Cambiar caracteres en cadenas --en C--
« Respuesta #4 en: 30 Octubre 2011, 17:18 pm »

No es necesario almacenar los caracteres ni el contador ya que lo unico que se hace con ellos es imprimirlos. Tomando tu ejemplo:
Código
  1. x = 0;
  2. w = 0;
  3. while (cad[x] != '\0'){
  4.   if (cad[x] == 'a' || cad[x] == 'A' || cad[x] == 'e' || cad[x] == 'E'
  5.      || cad[x] == 'i' || cad[x] == 'I' || cad[x] == 'o' ||
  6.      cad[x] == 'O' || cad[x] == 'u' || cad[x] == 'U'
  7.   )
  8.      printf("%d", ++w);
  9.   else
  10.      putchar(cad[x]);
  11.  
  12.   x++;
  13. }
  14. putchar('\n');

Edito: no puede utilizarse la función "putchar" para imprimir el numero de vocales, hay que utilizar printf. Mea culpa. Ya esta corregido

Un saludo
« Última modificación: 31 Octubre 2011, 02:21 am por rir3760 » En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
n_n

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Cambiar caracteres en cadenas --en C--
« Respuesta #5 en: 31 Octubre 2011, 17:41 pm »

Muchas gracias!!

me sirvio de mucho su ayuda :)
En línea

LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Cambiar caracteres en cadenas --en C--
« Respuesta #6 en: 1 Noviembre 2011, 00:54 am »

Creo ser más claro así:

Código
  1. int x = 0;
  2. int w = 0;
  3.  
  4. char vocales[] = { 'A', 'E', 'I', 'O', 'U' };
  5.  
  6. while (cad[x] != '\0')
  7. {
  8.   for (int i = 0; i < 5; ++i)
  9.   {
  10.      if (toupper(cad[x]) == vocales[i])
  11.      {
  12.        printf("%d", ++w);
  13.        break;
  14.      }
  15.   }
  16.   if (i == 5) putchar(cad[x]);
  17.  
  18.   x++;
  19. }
  20. putchar('\n');
« Última modificación: 1 Noviembre 2011, 00:57 am por LearningSpanishProgrammer » En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Cambiar caracteres en cadenas --en C--
« Respuesta #7 en: 1 Noviembre 2011, 02:47 am »

Otra opcion es utilizando la funcion "strchr" (prototipo en <string.h>) para conocer si el caracter es vocal:
Código
  1. char cad[] = "Esta solo es una cadena de prueba";
  2. int i;
  3. int j;
  4.  
  5. j = 0;
  6. for (i = 0; cad[i] != '\0'; i++)
  7.   if (strchr("AEIOUaeiou", cad[i]) == NULL)
  8.      putchar(cad[i]);
  9.   else
  10.      printf("%d", ++j);
  11. putchar('\n');

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Cambiar caracteres en cadenas --en C--
« Respuesta #8 en: 1 Noviembre 2011, 20:35 pm »

También puedes hacer lo siguiente:

Código
  1. int counter = 0;
  2. char ch = 0;
  3.  
  4. while ( (ch = getchar()) != '\n')
  5. {
  6. if (strchr("AEIOU", toupper(ch)) != NULL)
  7.  ch = (++counter) + '0';
  8.  
  9. putchar(ch);
  10. }
En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Cambiar caracteres en cadenas --en C--
« Respuesta #9 en: 2 Noviembre 2011, 01:27 am »

if (strchr("AEIOU", toupper(ch)) != NULL)
   ch = (++counter) + '0';
Esa fue mi primera aproximación pero falla si hay mas de nueve vocales en la cadena.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
comparacion de cadenas de caracteres en NetBeans IDE 6.0.1
Java
yogo 2 13,852 Último mensaje 3 Marzo 2008, 16:12 pm
por yogo
Cadenas de caracteres « 1 2 »
Programación C/C++
Angel Zero 10 9,074 Último mensaje 4 Junio 2011, 18:38 pm
por Angel Zero
Cadenas de caracteres solucionado
Programación General
malocha 0 1,864 Último mensaje 18 Julio 2011, 00:18 am
por malocha
Cadenas de caracteres
Programación C/C++
carmelina 2 2,367 Último mensaje 7 Mayo 2012, 03:46 am
por andres_5
Cadenas de caracteres , Puntero mas Dudas !!
Programación C/C++
bash 5 1,912 Último mensaje 24 Mayo 2015, 17:58 pm
por bash
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines