Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: w3ro en 3 Abril 2013, 03:56 am



Título: observación de programa en c
Publicado por: w3ro en 3 Abril 2013, 03:56 am
hola queria ver si me podrian dar otra opcion mas corta de validar y contar las vocales y consonantes de este programa saludos gracias
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define tam 10

void captura (char M[tam][tam]);
void mostrar (char M[tam][tam]);
int main()
{

  char M[tam][tam];
  captura(M);
  getch();
  return(0);
}
void captura (char M[tam][tam])
{
  int i,con=0,voc=0,ban=0,lon=0;
  for (int i=0;i<=4;i++)
{
printf("Escribe un color %d: ",i+1);
scanf("%s",&M);
}
for ( i=0;i<=4;i++)
{
printf("Colores:  %s\n",M);
}
 for(int x=0;x<=4;x++)
    {
    lon=strlen(M
  • );
    for(int y=0; y<lon; y++)
       {
       if(M
  • [y]=='a')
       {
       voc=voc+1;
       ban=1;
       }

      if(M
  • [y]=='e')
       {
       voc=voc+1;
       ban=1;
       }
      if(M
  • [y]=='i')
       {
       voc=voc+1;
       ban=1;
       }
       if(M
  • [y]=='o')
       {
       voc=voc+1;
       ban=1;
       }
        if(M
  • [y]=='u')
       {
       voc=voc+1;
       ban=1;
       }
         if (ban==0)
         {
         con=con+1;
         }
       ban=0;
       }
       }

       printf("El numero de vocales es: %d\n",voc);
       printf("El numero de consonantes es: %d\n",con);
 }


Título: Re: observación de programa en c
Publicado por: pacoperico en 3 Abril 2013, 12:22 pm
Si lo quieres mas corto puedes hacer un switch case en lugar de todos esos if para comprobar si es una vocal


Título: Re: observación de programa en c
Publicado por: <<<-Basura->>> en 3 Abril 2013, 13:13 pm
Con 2 vectores... uno para vocales y otro para consonantes

Recorriendo los por cada letra, cuando encuentra una coincidencia suma en alguno de los contadores...

solo necesitas 2 for y 2 if... creo


Título: Re: observación de programa en c
Publicado por: amchacon en 3 Abril 2013, 14:20 pm
No necesitas la librería conio (puedes usar getchar() en lugar de getch()).

solo necesitas 2 for y 2 if... creo
2 if? Como compruebas si una letra es una vocal?


Título: Re: observación de programa en c
Publicado por: Almapa en 3 Abril 2013, 15:49 pm
Si no he entendido mal quieres que se cuenten las vocales y consonantes de cada color por separado no? Mira si esto te funciona.

Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. #define tam 10
  5.  
  6. void captura (char M[tam][tam]);
  7. void mostrar (char M[tam][tam]);
  8. int main()
  9. {
  10.  
  11.  char M[tam][tam];
  12.  captura(M);
  13.  getch();
  14.  return(0);
  15. }
  16.  
  17. void captura (char M[tam][tam])
  18. {
  19.  int i,con,voc;
  20.  for (int i=0;i<=4;i++)
  21.  {
  22.   printf("Escribe un color %d: ",i+1);
  23.   scanf("%s",&M[i]);
  24.  }
  25.  for ( i=0;i<=4;i++)
  26.  {
  27.    con=0;
  28.    voc=0;
  29.    printf("Color:  %s\n",M[i]);;
  30.    for(int y=0; y<strlen(M[i]); y++)
  31.    {
  32.       if(M[i][y]=='a' || M[i][y]=='e' || M[i][y]=='i' || M[i][y]=='o' || M[i][y]=='u') voc=voc+1; else con=con+1;
  33.    }
  34.  printf("El numero de vocales es: %d\n",voc);
  35.  printf("El numero de consonantes es: %d\n",con);
  36.  }
  37. }


Título: Re: observación de programa en c
Publicado por: rir3760 en 3 Abril 2013, 15:57 pm
2 if? Como compruebas si una letra es una vocal?
Haciendo trampa (Usando la biblioteca estandar). Mas o menos asi:
Código
  1. #include <string.h> /* strchr  */
  2. #include <ctype.h>  /* isalpha */
  3.  
  4. /* ... */
  5.  
  6. char ch; /* algun caracter */
  7.  
  8. /* ... */
  9.  
  10. if (isalpha(ch))
  11.   if (strchr("AEIOUaeiou", ch) != NULL){
  12.  
  13.      /* ch es una vocal */
  14.  
  15.   }else {
  16.  
  17.      /* ch es una consonante */
  18.  
  19.   }

Un saludo