Programa en C reemplaza las vocales del texto introducido por la siguiente vocal

Iniciado por ERIK546, 28 Junio 2012, 18:52 PM

0 Miembros y 1 Visitante están viendo este tema.

ERIK546

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:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int i;
    char t[10];
    printf("Programa que cambia las vocales de un texto por la siguiente vocal\n");
    printf("Introduce el texto\n");
    scanf("%s",t);
    for(i=0;i!='\0';i++){
                      if(t[i]=='a'){
                                    t[i]=='e';
                                    }
                      if(t[i]=='e'){
                                    t[i]=='i';
                                    }
                      if(t[i]=='i'){
                                    t[i]=='o';
                                    }
                      if(t[i]=='o'){
                                    t[i]=='u';
                                    }
                      if(t[i]=='u'){
                                    t[i]=='a';
                                    }
                      }
    printf("%s\n",t);
    system("PAUSE");
    return 0;
}


Gracias a todos de antemano.

0xDani

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

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.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
    int i;
    char t[10];
    printf("Programa que cambia las vocales de un texto por la siguiente vocal\n");
    printf("Introduce el texto\n");
    scanf("%s",t);
    for(i=0;i<10;i++){
                      if(t[i]=='a'){
                                    t[i]='e';
                                    }
                      else if(t[i]=='e'){
                                    t[i]='i';
                                    }
                      else if(t[i]=='i'){
                                    t[i]='o';
                                    }
                      else if(t[i]=='o'){
                                    t[i]='u';
                                    }
                      else if(t[i]=='u'){
                                    t[i]='a';
                                    }
                      }
    printf("%s\n",t);
    system("PAUSE");
    return 0;
}

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.

for(i=0;i!='\0';i++){....}

criskapunk

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

maxim_o

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 (cpp) [Seleccionar]

t[i]!='/0'

ERIK546

Cita de: maxim_o 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 (cpp) [Seleccionar]

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:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
    int i;
    char t[20];
    printf("Programa que cambia las vocales de un texto por la siguiente vocal\n");
    printf("Introduce el texto\n");
    gets(t);
    for(i=0;t[i]!='\0';i++){
                      if(t[i]=='a'){
                                    t[i]='e';
                                    }
                      else if(t[i]=='e'){
                                    t[i]='i';
                                    }
                      else if(t[i]=='i'){
                                    t[i]='o';
                                    }
                      else if(t[i]=='o'){
                                    t[i]='u';
                                    }
                      else if(t[i]=='u'){
                                    t[i]='a';
                                    }
                      }
    printf("%s\n",t);
    system("PAUSE");
    return 0;
}