Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: cerealtrox en 3 Septiembre 2021, 22:02 pm



Título: programa en c que cambia todas las vocales por una "e"
Publicado por: cerealtrox en 3 Septiembre 2021, 22:02 pm
 :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:

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.    scanf("%s",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]='e';
  17.                                    }
  18.                      else if(t[i]=='i'){
  19.                                    t[i]='e';
  20.                                    }
  21.                      else if(t[i]=='o'){
  22.                                    t[i]='e';
  23.                                    }
  24.                      else if(t[i]=='u'){
  25.                                    t[i]='e';
  26.                                    }
  27.                      }
  28.    printf("%s\n",t);
  29.    system("PAUSE");
  30.    return 0;
  31. }

MOD: Etiqueta GeShi


Título: Re: programa en c que cambia todas las vocales por una "e"
Publicado por: K-YreX en 3 Septiembre 2021, 22:15 pm
Ese programa es mejorable por todas partes...
  • Utiliza una constante para la longitud máxima del array o utiliza un array dinámico.
  • El programa dice que cambia las vocales de un texto por la siguiente vocal. De ahí yo entiendo que cambia 'a' -> 'e' | 'e' -> 'i' | 'i' -> 'o' | 'o' -> 'u' | 'u' -> 'a'.
  • No se debe utilizar scanf() para almacenar cadenas de texto. Si introduzco "Hola Mundo", la salida es "Hele"... ¿Qué ha pasado con "Mundo"?
  • Demasiado código para el if-else-if. Eso se puede hacer mucho más compacto y limpio.
  • No es recomendable usar <system("pause")>. Utiliza en su lugar <getchar()>. Obtendrás el mismo resultado, más eficiente y sin necesitar la librería <stdlib.h>.
  • La librería <string.h> tampoco está siendo utilizada.


Título: Re: programa en c que cambia todas las vocales por una "e"
Publicado por: MAFUS en 3 Septiembre 2021, 23:22 pm
Bueno, seguramente está empezando y coincidirás conmigo que esa es la forma de hacer de la mayoría de los tutoriales de internet.


Título: Re: programa en c que cambia todas las vocales por una "e"
Publicado por: K-YreX en 4 Septiembre 2021, 13:28 pm
Bueno, seguramente está empezando y coincidirás conmigo que esa es la forma de hacer de la mayoría de los tutoriales de internet.
Desde luego, pero la forma de publicar el código fue como "no sufráis más, ya he resuelto uno de los problemas del milenio y aquí lo tenéis".
Si hubiera publicado el mismo código pero con una frase como: "¿Cómo puedo mejorar este programa?", seguramente mi respuesta no habría sido tan tajante. Aunque no por tajante ha dejado de ser instructiva, ya que le enumeré algunas mejoras que podía implementar y alguna breve explicación del porqué.  :rolleyes: :rolleyes: