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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  hola necesito ayuda con una tarea de programación en lenguaje c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: hola necesito ayuda con una tarea de programación en lenguaje c  (Leído 3,060 veces)
vale1213

Desconectado Desconectado

Mensajes: 1


Ver Perfil
hola necesito ayuda con una tarea de programación en lenguaje c
« en: 6 Octubre 2022, 02:13 am »

La función debe realizar el siguiente procedimiento:

Identificar y retornar el número de vocales que posee el nombre ingresado.
Reemplazar e imprimir las vocales por el símbolo # en la posición donde fueron localizadas.

este es mi avance y no logro reemplazar las vocales por el símbolo:

Código
  1. int busca_vocales(char *cadena);
  2.  
  3. int main(int argc, char const *argv[])
  4. {
  5.  
  6. char t[30];
  7. int i;
  8. //vocales//
  9. printf("Escribe un nombre:\n");
  10. gets(t);
  11. int vocales = busca_vocales(t);
  12. printf("El numero de vocales que tiene el nombre es: %d\n", vocales);
  13.  
  14. //cambiar vocales por ##//
  15.   printf("cambio de vocales por #: %s", t);
  16.      for(i=0;t[i]!='\0';i++){
  17.        if(t[i]=='a')
  18.            t[i]='#';
  19. else if(t[i]=='e')
  20.            t[i]='#';
  21. else if(t[i]=='i')
  22.            t[i]='#';
  23. else if(t[i]=='o')
  24.            t[i]='#';
  25. else if(t[i]=='u')
  26.            t[i]='#';
  27.    }
  28.  
  29.  
  30.  
  31. return 0;
  32. }
  33. int busca_vocales(char *cadena){
  34. int vocales = 0;
  35. int indice;
  36.  
  37. for(indice = 0; cadena[indice] != '\0'; ++indice){
  38. char letraactual = tolower(cadena[indice]);
  39.  
  40.  
  41. if (
  42. letraactual == 'a' ||
  43. letraactual == 'e' ||
  44. letraactual == 'i' ||
  45. letraactual == 'o' ||
  46. letraactual == 'u'
  47. )
  48. {
  49. vocales++;
  50. }
  51. }
  52. return vocales;
  53. }

MOD: El código debe ir entre etiquetas de Código GeSHi


« Última modificación: 9 Octubre 2022, 19:38 pm por K-YreX » En línea

Lieutenant McFarley

Desconectado Desconectado

Mensajes: 49



Ver Perfil
Re: hola necesito ayuda con una tarea de programación en lenguaje c
« Respuesta #1 en: 6 Octubre 2022, 12:33 pm »

Dando un vistazo por encima parece que en "t" almacenas el nombre a analizar., una cadena. En las líneas
   if(t=='a')
            t='#';
   else if(t=='e')
            t='#';
   else if(t=='i')
            t='#';
   else if(t=='o')
            t='#';
   else if(t=='u')
            t='#';
Se está comparando la cadena entera con una vocal, no cada uno de los caracteres que forman la cadena. Pienso que debería analizarse carácter por carácter uno a uno de la cadena y cambiarlo cuando proceda. Algo parecido a lo que se hace para contar las vocales, recorrer toda la cadena; no comparar ésta al completo con una sola vocal.


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: hola necesito ayuda con una tarea de programación en lenguaje c
« Respuesta #2 en: 9 Octubre 2022, 19:47 pm »

El problema que menciona @Lieutenant McFarley sucede por no utilizar etiquetas de Código GeSHi para agregar códigos.
La letra 'i' entre corchetes '[]' se interpreta como letra cursiva por lo que no se ve en el código y a partir de ahí el resto del código se empieza a ver en cursiva: tal que así

Los códigos se deben insertar usando el desplegable de "Código GeSHi" y seleccionando el lenguaje correspondiente o escribiendo manualmente las etiquetas:
[code=c]
// Codigo C aqui
[/code]


Y la respuesta al problema original es: no existe ningún problema.
Se podría mejorar un poco el código ya que ahora mismo sólo se sustituyen las vocales minúsculas y los ifs se pueden juntar en uno solo usando el operador OR (||)
Por lo demás, si muestras la cadena t después del for que reemplaza las vocales, verás que se han reemplazado correctamente...  :rolleyes:
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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