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);
 }
 
			 
			
			
				Si lo quieres mas corto puedes hacer un switch case en lugar de todos esos if para comprobar si es una vocal
			
			
			
				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
			
			
			
				No necesitas la librería conio (puedes usar getchar() en lugar de getch()).
Cita de: <<<-Underwar->>> en  3 Abril 2013, 13:13 PMsolo necesitas 2 for y 2 if... creo
2 if? Como compruebas si una letra es una vocal?
			
 
			
			
				Si no he entendido mal quieres que se cuenten las vocales y consonantes de cada color por separado no? Mira si esto te funciona.
#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,voc;
  for (int i=0;i<=4;i++)
  {
   printf("Escribe un color %d: ",i+1);
   scanf("%s",&M[i]);
  }
  for ( i=0;i<=4;i++)
  {
    con=0;
    voc=0;
    printf("Color:  %s\n",M[i]);;
    for(int y=0; y<strlen(M[i]); y++)
    {
       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;
    }
  printf("El numero de vocales es: %d\n",voc);
  printf("El numero de consonantes es: %d\n",con);
  }
}
			
			
			
				Cita de: amchacon en  3 Abril 2013, 14:20 PM2 if? Como compruebas si una letra es una vocal?
Haciendo trampa (Usando la biblioteca estandar). Mas o menos asi:
#include <string.h> /* strchr  */
#include <ctype.h>  /* isalpha */
/* ... */
char ch; /* algun caracter */
/* ... */
if (isalpha(ch))
   if (strchr("AEIOUaeiou", ch) != NULL){
      
      /* ch es una vocal */
      
   }else {
      
      /* ch es una consonante */
      
   }Un saludo