observación de programa en c

Iniciado por w3ro, 3 Abril 2013, 03:56 AM

0 Miembros y 1 Visitante están viendo este tema.

w3ro

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);
    }

pacoperico

Si lo quieres mas corto puedes hacer un switch case en lugar de todos esos if para comprobar si es una vocal

<<<-Basura->>>

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
<<<--Basura-->>>

amchacon

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?
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

Almapa

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 (cpp) [Seleccionar]
#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);
  }
}

rir3760

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
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