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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa que cuenta vocales
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa que cuenta vocales  (Leído 2,950 veces)
Supermanxd

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Programa que cuenta vocales
« en: 28 Mayo 2015, 05:26 am »

No me ejecuta como quiero ;c necesito que me cuente las vocales ingresadas y no me sale:CCCCCCC
Que tengo mal??

Código
  1. #include <stdlib.h>
  2. #include <conio.h>
  3. #include <stdio.h>
  4.  
  5. char *pidetexto();
  6. void contar_vocal(char *p, int num[5]);
  7. void imprime(int num[5]);
  8.  
  9. int main()
  10. {
  11. char *texto;
  12. int num[5];
  13. texto=pidetexto();
  14. contar_vocal(texto,num);
  15. imprime(num);
  16. getch();
  17.  
  18. }
  19.  
  20. char* pidetexto()
  21. {
  22. char *q,text[50];
  23. printf("\ningrese el texto: ");
  24. scanf("%s", &text);
  25. q=text;
  26. return q;
  27. }
  28.  
  29. void contar_vocal(char *p , int num[5])
  30. {
  31. int num1[5];
  32. num1[0]=0;
  33. num1[1]=1;
  34. num1[2]=2;
  35. num1[3]=3;
  36. num1[4]=4;
  37.  
  38. while (*p)
  39. {
  40.  
  41.  
  42. if(*p =='a' || *p== 'A')
  43. {num1[0]=num1[0]+1;}
  44.  
  45.  
  46.  
  47.  
  48. if(*p =='e' || *p== 'E')
  49. {num1[1]=num1[1]+1;}
  50.  
  51.  
  52.  
  53.  
  54. if(*p =='i' || *p== 'I')
  55. {num1[1]=num1[1]+1;}
  56.  
  57.  
  58.  
  59.  
  60. if(*p =='o' || *p== 'O')
  61. {num1[1]=num1[1]+1;}
  62.  
  63.  
  64. if(*p =='u' || *p== 'U')
  65. {num1[1]=num1[1]+1;}
  66.  
  67.  
  68.  
  69. p++;
  70.  
  71. }
  72.  
  73. *(&num[0])=num1[0];
  74. *(&num[1])=num1[1];
  75. *(&num[2])=num1[2];
  76. *(&num[3])=num1[3];
  77. *(&num[4])=num1[4];
  78.  
  79. //muercielago
  80.  
  81. }
  82.   void imprime(int num[5])
  83.    {
  84.     printf("\nla letra a se repite %d", num[0]);
  85.     printf("\nla letra e se repite %d", num[1]);
  86.     printf("\nla letra i se repite %d", num[2]);
  87. printf("\nla letra o se repite %d", num[3]);
  88. printf("\nla letra u se repite %d", num[4]);
  89.    }


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Programa que cuenta vocales
« Respuesta #1 en: 28 Mayo 2015, 05:45 am »

no te debería salir "CCCCCCC" te sale la cantidad de apariciones... pero el numero es incorrecto por lo que hay en las lineas de la 33 a la 36, porque le das valores diferentes a 0... los if deberías hacerlos con if else, es inutil que recorra todo, ya que si es "a" no puede ser ningúna de las otras


si arreglas lo de esos valores, estás listo


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Supermanxd

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Programa que cuenta vocales
« Respuesta #2 en: 29 Mayo 2015, 02:42 am »

le cambie los valores a 0 y lo de las condiciones de if else y no me sale:C ayuda xfa
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Programa que cuenta vocales
« Respuesta #3 en: 29 Mayo 2015, 03:10 am »

Código
  1. if(*p =='a' || *p== 'A')
  2. {num1[0]=num1[0]+1;} //mejor - > {num[0]+=1;}
  3.  
  4. if(*p =='e' || *p== 'E')
  5. {num1[1]=num1[1]+1;}
  6.  
  7. if(*p =='i' || *p== 'I')
  8. {num1[1]=num1[1]+1;} //mejor -> {num[2]+=1;}
  9.  
  10.  
  11. if(*p =='o' || *p== 'O')
  12. {num1[1]=num1[1]+1;} //mejor -> {num[3]+=1;}
  13.  
  14. if(*p =='u' || *p== 'U')
  15. {num1[1]=num1[1]+1;} //mejor -> {num[4]+=1;}
  16.  

Puedes iniciar todos los valores de num a 0 con memset(num,0,sizeof(num));

No se si con eso ya funcione, no tengo un compilador para probar

Un saludo
« Última modificación: 29 Mayo 2015, 03:46 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Supermanxd

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Programa que cuenta vocales
« Respuesta #4 en: 29 Mayo 2015, 03:46 am »

gracias ya me salio :DDD
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Programa que cuenta vocales
« Respuesta #5 en: 29 Mayo 2015, 05:09 am »

limpiando un poco el codigo

Código
  1.    #include <stdlib.h>
  2.    #include <conio.h>
  3.    #include <stdio.h>
  4.  
  5.    char *pidetexto();
  6.    void contar_vocal(char *p, int num[5]);
  7.    void imprime(int num[5]);
  8.  
  9.    int main()
  10.    {
  11.    char *texto;
  12.    int num[5];
  13.    texto=pidetexto();
  14.    contar_vocal(texto,num);
  15.    imprime(num);
  16.    getch();
  17.  
  18.    }
  19.  
  20.    char* pidetexto()
  21.    {
  22.    char *q,text[50];
  23.    printf("\ningrese el texto: ");
  24.    scanf("%s", &text);
  25.    q=text;
  26.    return q;
  27.    }
  28.  
  29.    void contar_vocal(char *p , int num[5])
  30.    {
  31.  
  32.    num[0]=0;
  33.    num[1]=0;
  34.    num[2]=0;
  35.    num[3]=0;
  36.    num[4]=0;
  37.  
  38.    while (*p){
  39.    if(*p =='a' || *p== 'A')
  40.    {num[0]++;}
  41.    else if(*p =='e' || *p== 'E')
  42.    {num[1]++;}
  43.    else if(*p =='i' || *p== 'I')
  44.    {num[2]++;}
  45.    else if(*p =='o' || *p== 'O')
  46.    {num[3]++;}
  47.    else if(*p =='u' || *p== 'U')
  48.    {num[4]++;}
  49.    p++;
  50.    }
  51.    }
  52.  
  53.    void imprime(int num[5]){
  54.        printf("\nla letra a se repite %d", num[0]);
  55.        printf("\nla letra e se repite %d", num[1]);
  56.        printf("\nla letra i se repite %d", num[2]);
  57.    printf("\nla letra o se repite %d", num[3]);
  58.    printf("\nla letra u se repite %d", num[4]);
  59.       }
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Programa que cuenta vocales
« Respuesta #6 en: 2 Junio 2015, 16:37 pm »

No me ejecuta como quiero ;c necesito que me cuente las vocales ingresadas y no me sale
Ademas de lo ya comentado por engel lex y 0xFer deberías evitar el uso de la biblioteca conio de Borland (la explicación en |Lo que no hay que hacer en C/C++. Nivel basico|) y un error importante se encuentra en la función de lectura:
Código
  1. char* pidetexto()
  2. {
  3. char *q,text[50];
  4. printf("\ningrese el texto: ");
  5. scanf("%s", &text);
  6. q=text;
  7. return q;
  8. }
El valor que retorna "pidetexto" es la dirección de "text" pero al ser esta una variable local se destruye (su memoria se libera) al terminar la función con lo cual el puntero resultante (de la llamada) no es valido.

Para solucionarlo debes reservar memoria con malloc y utilizar la dirección en memoria del bloque como valor de retorno de la función, por ejemplo:
Código
  1. char *pidetexto(void)
  2. {
  3.   char *q;
  4.  
  5.   if ((q = malloc(50)) != NULL){
  6.      puts("Ingrese el texto:");
  7.      scanf("%s", q); /* Falta validar el resultado de scanf */
  8.   }
  9.  
  10.   return q;
  11. }
Y después del uso del bloque hay que liberar la memoria mediante la función free.

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
Programa con acciones: contador de vocales y consonantes
Programación C/C++
street_21 3 33,084 Último mensaje 16 Enero 2012, 14:42 pm
por rir3760
Programa en C reemplaza las vocales del texto introducido por la siguiente vocal
Programación C/C++
ERIK546 5 18,534 Último mensaje 28 Junio 2012, 23:33 pm
por ERIK546
eliminar vocales
Programación C/C++
ALONSOQ 6 11,941 Último mensaje 6 Septiembre 2012, 19:38 pm
por BlackZeroX
vocales en python
Scripting
chauder92 4 4,010 Último mensaje 31 Julio 2014, 06:22 am
por Godor
Programa que elimine vocales « 1 2 »
Programación C/C++
bryanrz96 15 4,863 Último mensaje 6 Noviembre 2015, 03:03 am
por furciorifa
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines