Dev - C++ - AYUDA CON UN PROGRAMA EN C

 
Vista:
sin imagen de perfil

AYUDA CON UN PROGRAMA EN C

Publicado por ruben r (15 intervenciones) el 19/05/2017 18:26:35
el programa consiste en imprimir de una frase el numero de vocales,consonantes,digitos,espacios en blanco y otros caracteres,hasta ahora llevo resuelto esto y cuando lo ejecute escribi la frase pero me sale 0 vocales 0 consonantes 0 digitos y etc nose cual sea el error


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void contar(char linea[],int *vocales,int *consonantes,int *digitos,int *blanco,int *otros);
 
int main(void)
{
 
	char frase[100];
	int vocales=0;
	int consonantes=0;
	int digitos=0;
	int blanco=0;
	int otros=0;
 
	printf("\n ESCRIBA UNA FRASE:");
	gets(frase);
	printf("\n Numero de vocales:%d",vocales);
	printf("\n Numero de consonantes:%d",consonantes);
	printf("\n Numero de digitos:%d",digitos);
	printf("\n Numero de espacios en blanco:%d",blanco);
	printf("\n Numero de otros caracteres:%d",otros);
 
	getch();
}
void contar(char linea[],int *vocales,int *consonantes,int *digitos,int *blanco,int *otros)
{
	int x=0;
	int y=0;
	char frase[100];
	for(int x=0;x<strlen(frase);x++){
	if(frase[x]=='a'|| frase[x]=='e' || frase[x]=='i' || frase[x]=='o' || frase[x]=='u');
	{
		*vocales++;
	}
	if(frase[x]=='b'|| frase[x]=='c' || frase[x]=='d' || frase[x]=='f' || frase[x]=='g' || frase[x]=='h' || frase[x]=='j' || frase[x]=='k' || frase[x]=='l' || frase[x]=='m' || frase[x]=='n' || frase[x]=='p' || frase[x]=='q' || frase[x]=='r' || frase[x]=='s' || frase[x]=='t' || frase[x]=='v' || frase[x]=='w' || frase[x]=='x' || frase[x]=='y' || frase[x]=='z');
	{
	*consonantes++;
	}
    if(frase[x]<=0 && >=9);
	{
	*digitos++;
	}
    if(frase[x])=="");
	{
	*blanco++;
	}
	}
 
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dionicio
Val: 168
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

re: AYUDA CON UN PROGRAMA EN C

Publicado por Dionicio (57 intervenciones) el 19/05/2017 18:33:46
No has implementado la función contar(); en el main así que por eso no resulta. También decirte que no es recomendable usar la función gets(); para leer cadenas de caracteres.

Y aprovechar para decirte que la función contar tiene unos cuantos errores mínimos desde mi punto de vista.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

re: AYUDA CON UN PROGRAMA EN C

Publicado por ruben r (15 intervenciones) el 19/05/2017 18:35:55
adonde tendria que colocar la funcion? y para leer caracteres tendria que ponerlo asi: scanf("%c",&frase); ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 84
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

re: AYUDA CON UN PROGRAMA EN C

Publicado por Yamil Bracho (41 intervenciones) el 19/05/2017 18:48:46
Tienes que pasar frase como parametro a tu funcion porque tienes un string local y ese es el que esta usando...
Ademas de eso no estas llamando a contar() en tu funcion main()...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

re: AYUDA CON UN PROGRAMA EN C

Publicado por ruben r (15 intervenciones) el 19/05/2017 19:00:57
podria usar la libreria ctype.h para resolver esto mas rapido?? es que es para hoy y llevo casi toda la semana intentando y nada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dionicio
Val: 168
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

re: AYUDA CON UN PROGRAMA EN C

Publicado por Dionicio (57 intervenciones) el 19/05/2017 19:12:53
Aquí te dejo un ejemplo de ayuda para que lo cheques y puedas tratar de entender como funciona. Faltan algunas cosas como tratar de leer la cadena de caracteres pero funciona, viene con una cadena de caracteres de ejemplo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

re: AYUDA CON UN PROGRAMA EN C

Publicado por ruben r (15 intervenciones) el 19/05/2017 20:24:55
el ejemplo me sirve pero el problema es que es con estructura y ese tema apenas lo e empezado a dar asi que nose como pasarlo a las librerias basicas , no tendras por hay un ejemplo parecido pero que no sea con estructura?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dionicio
Val: 168
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

re: AYUDA CON UN PROGRAMA EN C

Publicado por Dionicio (57 intervenciones) el 19/05/2017 20:35:25
Lo único que tendrías que hacer es quitar la estructura y usar variables normales y pasarlas como parámetros a la función contar();, tal y como lo tenías en tú ejemplo.

1
2
3
4
5
6
...
int vocales, consonantes;// y así sigues declarando las demás variables
char linea[] = "Hola";
 
contar(linea,&vocales,&consonantes);//Y pasas la dirección de las demás variables
...
Entonces la función cambiaría a:
1
void contar(char * linea, int * vocales, int * consonantes)

y en la función pones (*vocales)++ por ejemplo. Eso es fácil así que no te rindas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

re: AYUDA CON UN PROGRAMA EN C

Publicado por ruben r (15 intervenciones) el 19/05/2017 20:40:06
gracias, seguire intentando cualquier cosa te aviso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

re: AYUDA CON UN PROGRAMA EN C

Publicado por ruben r (15 intervenciones) el 19/05/2017 21:15:09
encontre este ejemplo pero le cambia unas cosas pero aun asi no me corre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#include <stdlib.h>
main ()
{
	char cadena[100];
	printf ("Escribe una cadena de no mas de 100 caracteres.\n");
	scanf ("%s", cadena);
	cuenta (cadena);
}
void cuenta (char *cadena[100])
{
	int x, vocal, conson,num,blanco;
	vocal= conson= num= 0;
	for (x= 0;cadena [x]!= '\0'; x++)
	{
		if (cadena [x]>= 'a' && cadena [x]<= 'z' || cadena [x]>= 'A' && cadena [x]<= 'Z')
		{
			if (cadena [x]== 'a' || cadena [x]== 'e' || cadena [x]== 'i'
				|| cadena [x]== 'o' || cadena [x]== 'u'|| cadena [x]== 'A'
				|| cadena [x]== 'E' || cadena [x]== 'I'|| cadena [x]== 'O'
				|| cadena [x]== 'U')
				vocal++;           //Cuenta las vocales 
			else
				conson++;          //Cuenta las consonantes  
		}
		else
			if (cadena [x]>= '0' && cadena [x]<= '9')
				num++;             //Cuenta los números
	}
	printf ("El numero de vocales es: %d.\n",vocal);
	printf ("El numero de consonantes es: %d.\n",conson);
	printf ("El numero de digitos es: %d.\n",num);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dionicio
Val: 168
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

re: AYUDA CON UN PROGRAMA EN C

Publicado por Dionicio (57 intervenciones) el 19/05/2017 22:17:34
Veo en ese ejemplo la inclusión de librerías innecesarias para el ejercicio. Para leer cadenas de caracteres me gustaría que investigaras el uso de fgets(); creo que es una función más útil que scanf(); y gets();. En cuanto al código que te dejo de bajo trata de comprenderlo, porque más que diga y explique no lograras entenderlo así de fácil. Así que practica con el código que te dejo. Suerte y cualquier duda es bienvenida.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

re: AYUDA CON UN PROGRAMA EN C

Publicado por ruben r (15 intervenciones) el 19/05/2017 22:32:12
gracias ahora si pude terminarlo ahora si ejecuta y todo muchas gracias por tu ayuda que Dios te bendiga
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

re: AYUDA CON UN PROGRAMA EN C

Publicado por Thanatos (199 intervenciones) el 20/05/2017 00:21:28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <stdio.h>
#include <string.h>  // strlen()
#include <ctype.h>   // isalpha(), isdigit(), isspace(), ispunct()
 
void contar(const char *);
 
int main(void)
{
    char frase[100 + 1] = { '\0' };
 
    printf("Escriba una frase:\n");
    if (fgets(frase, sizeof frase, stdin))
    {
        contar(frase);
    }
 
    return 0;
}
 
void contar(const char *frase)
{
    int vocales = 0;
    int consonantes = 0;
    int digitos = 0;
    int espacios = 0;
    int puntuacion = 0;
    int otros = 0;
 
    for (size_t i = 0; i < strlen(frase); ++i)
    {
        if (isalpha(frase[i]))
        {
            char letra = (char)tolower(frase[i]);
            _Bool esVocal = letra == 'a' || letra == 'e' || letra == 'i' ||
                            letra == 'o' || letra == 'u';
            if (esVocal)
            {
                ++vocales;
            }
            else
            {
                ++consonantes;
            }
        }
        else if (isdigit(frase[i]))
        {
            ++digitos;
        }
        else if (isspace(frase[i]) && frase[i] != '\n')
        {
            ++espacios;
        }
        else if (ispunct(frase[i]))
        {
            ++puntuacion;
        }
        else
        {
            ++otros;  // entre ellos el carácter de retorno (ENTER).
        }
    }
 
    printf(
        "\n"
        "Vocales ------> %3d\n"
        "Consonantes --> %3d\n"
        "Digitos ------> %3d\n"
        "Espacios -----> %3d\n"
        "Puntuacion ---> %3d\n"
        "Otros --------> %3d\n",
        vocales, consonantes, digitos, espacios, puntuacion, otros
    );
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar