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