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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa en C reemplaza las vocales del texto introducido por la siguiente vocal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa en C reemplaza las vocales del texto introducido por la siguiente vocal  (Leído 18,529 veces)
ERIK546

Desconectado Desconectado

Mensajes: 44



Ver Perfil WWW
Programa en C reemplaza las vocales del texto introducido por la siguiente vocal
« en: 28 Junio 2012, 18:52 pm »

Hola a todos, solicito su ayuda para que me digan la razón por la cual el siguiente programa, aunque compila y se ejecuta correctamente, no arroja los resultados esperados. El siguiente programa tiene por objetivo de un texto introducido, cambiar las vocales por la vocal siguiente e imprimir dicho mensaje. Un ejemplo: Al ingresar la palabra: "vestuario", tendría que regresar la palabra "vistaerou".
Les dejo el código:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.    int i;
  7.    char t[10];
  8.    printf("Programa que cambia las vocales de un texto por la siguiente vocal\n");
  9.    printf("Introduce el texto\n");
  10.    scanf("%s",t);
  11.    for(i=0;i!='\0';i++){
  12.                      if(t[i]=='a'){
  13.                                    t[i]=='e';
  14.                                    }
  15.                      if(t[i]=='e'){
  16.                                    t[i]=='i';
  17.                                    }
  18.                      if(t[i]=='i'){
  19.                                    t[i]=='o';
  20.                                    }
  21.                      if(t[i]=='o'){
  22.                                    t[i]=='u';
  23.                                    }
  24.                      if(t[i]=='u'){
  25.                                    t[i]=='a';
  26.                                    }
  27.                      }
  28.    printf("%s\n",t);
  29.    system("PAUSE");
  30.    return 0;
  31. }
  32.  
  33.  
Gracias a todos de antemano.


En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Programa en C reemplaza las vocales del texto introducido por la siguiente vocal
« Respuesta #1 en: 28 Junio 2012, 20:42 pm »

Usas un operador relacional en vez de uno de asignacion.


En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
ERIK546

Desconectado Desconectado

Mensajes: 44



Ver Perfil WWW
Re: Programa en C reemplaza las vocales del texto introducido por la siguiente vocal
« Respuesta #2 en: 28 Junio 2012, 20:56 pm »

Ya lo he corregido y corre a la perfección. Sin embargo tengo duda sobre como una cadena de caracteres podría tomar cualquier tamaño; dependiendo del texto que le sea ingresado,  buscaría algo así como un "malloc" para esta cadena de caracteres. Ya que de momento solo podría hacer dichas operaciones para un máximo de 9 caracteres. Gracias por la corrección.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main(int argc, char *argv[])
  5. {
  6.    int i;
  7.    char t[10];
  8.    printf("Programa que cambia las vocales de un texto por la siguiente vocal\n");
  9.    printf("Introduce el texto\n");
  10.    scanf("%s",t);
  11.    for(i=0;i<10;i++){
  12.                      if(t[i]=='a'){
  13.                                    t[i]='e';
  14.                                    }
  15.                      else if(t[i]=='e'){
  16.                                    t[i]='i';
  17.                                    }
  18.                      else if(t[i]=='i'){
  19.                                    t[i]='o';
  20.                                    }
  21.                      else if(t[i]=='o'){
  22.                                    t[i]='u';
  23.                                    }
  24.                      else if(t[i]=='u'){
  25.                                    t[i]='a';
  26.                                    }
  27.                      }
  28.    printf("%s\n",t);
  29.    system("PAUSE");
  30.    return 0;
  31. }
  32.  
También me gustaría saber ¿Porqué no funciona la siguiente condición "if"?, (poniéndola en lugar de la anterior); les dejo escrita la condición, sin embargo poniéndola el programa no hace lo establecido.
Código
  1. for(i=0;i!='\0';i++){....}
  2.  
En línea

criskapunk

Desconectado Desconectado

Mensajes: 277



Ver Perfil
Re: Programa en C reemplaza las vocales del texto introducido por la siguiente vocal
« Respuesta #3 en: 28 Junio 2012, 21:51 pm »

Quizás me equivoque, pero no estarías comperando un número con un caracter ahí?
En línea

maxim_o

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Re: Programa en C reemplaza las vocales del texto introducido por la siguiente vocal
« Respuesta #4 en: 28 Junio 2012, 22:57 pm »

Si, yo creo que eso que dices, compara un numero con el caracter nulo... i nunca a valer '/0'.
La condicion deberia ser
Código
  1. t[i]!='/0'
En línea

ERIK546

Desconectado Desconectado

Mensajes: 44



Ver Perfil WWW
Re: Programa en C reemplaza las vocales del texto introducido por la siguiente vocal
« Respuesta #5 en: 28 Junio 2012, 23:33 pm »

Si, yo creo que eso que dices, compara un numero con el caracter nulo... i nunca a valer '/0'.
La condicion deberia ser
Código
  1. t[i]!='/0'
Hola muchas gracias maxim_o lo he solucionado con lo que me dices, además me di cuenta que solo funcionaba para cadenas de caracteres sin espacios, al usar "scanf" para guardar el texto en el arreglo, así que he utilizado gets(*) para poder trabajar con escritos completos. Gracias por todo me ha sido de mucha ayuda. Les dejo el código terminado:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main(int argc, char *argv[])
  5. {
  6.    int i;
  7.    char t[20];
  8.    printf("Programa que cambia las vocales de un texto por la siguiente vocal\n");
  9.    printf("Introduce el texto\n");
  10.    gets(t);
  11.    for(i=0;t[i]!='\0';i++){
  12.                      if(t[i]=='a'){
  13.                                    t[i]='e';
  14.                                    }
  15.                      else if(t[i]=='e'){
  16.                                    t[i]='i';
  17.                                    }
  18.                      else if(t[i]=='i'){
  19.                                    t[i]='o';
  20.                                    }
  21.                      else if(t[i]=='o'){
  22.                                    t[i]='u';
  23.                                    }
  24.                      else if(t[i]=='u'){
  25.                                    t[i]='a';
  26.                                    }
  27.                      }
  28.    printf("%s\n",t);
  29.    system("PAUSE");
  30.    return 0;
  31. }
  32.  
  33.  
  34.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines