C/Visual C - Problema calculando procentajes, dan siempre 0

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 4 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema calculando procentajes, dan siempre 0

Publicado por alberto (7 intervenciones) el 25/05/2018 06:59:09
Hola.Tengo que hacer un programa que me diga la cantidad de dígitos de una frase y el porcentaje de palabras impares de la frase. El problema es el porcentaje, calculo todos los valores bien (lo verifiqué), pero cuando tengo que sacar el porcentaje siempre me da 0. Alguien me puede ayudar a arreglarlo? Muchas gracias.
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
 
int dig(char frase[]);
int por(char frase[]);
int main()
{
int f=0,p,d;
float pr;
char frase[100],c;
printf("Ingrese una frase\n");
while((c=getchar())!='\n'){
    frase[f++]=c;
}
frase[f]='\0';
p=por(frase);
d=dig(frase);
printf("El porcentaje de palabras cuyo largo es impar es %d\n",p);
printf("La cantidad de dígitos que tiene la frase es %d\n",d);
 
    return 0;
}
int dig(char cade[]){
    int k, cantd=0;
      for(k=0;cade[k];k++){
        if(isdigit(cade[k])){
        cantd++;
        }
    }
return cantd;
}
int por(char cade[]){
int i,cpal=1,carcpal=0,palimp=0;
float porcen=0;
for(i=0;cade[i];i++){
    if(cade[i]==' '||cade[i]=='\0'){
        cpal++;
   }
    if(cade[i]!=' '){
        carcpal++;
        }
        else
        {
            if(carcpal%2!=0){
                palimp++;
                carcpal=0;
            }
        }
    }
    if(carcpal%2!=0){
                palimp++;
                carcpal=0;
    }
      porcen=(palimp/cpal)*100;
      printf("%f",porcen);
 
      return porcen;
 
}
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
sin imagen de perfil
Val: 265
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema calculando procentajes, dan siempre 0

Publicado por dario (29 intervenciones) el 26/05/2018 15:32:22
Hola, hice un pequeno cambio al final de la funcion POR, comparalo con el tuyo.
Salu2.

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
int dig(char frase[]);
int por(char frase[]);
 
int main()
{
	int f=0,p,d;
	float pr;
	char frase[100],c;
 
	printf("Ingrese una frase\n");
 
	while((c=getchar())!='\n')
    	frase[f++] = c;
 
	frase[f]='\0';
	p=por(frase);
	d=dig(frase);
 
	printf("\nEl porcentaje de palabras cuyo largo es impar es %d\n",p);
	printf("La cantidad de dígitos que tiene la frase es %d\n",d);
 
    return 0;
}
 
int dig(char cade[]){
    int k, cantd=0;
 
    for(k=0;cade[k];k++){
    	if(isdigit(cade[k]))
        cantd++;
    }
 
	return cantd;
}
 
int por(char cade[]){
	int i,cpal=1,carcpal=0,palimp=0;
	float porcen=0;
 
	for(i=0;cade[i];i++){
    	if(cade[i]==' '||cade[i]=='\0')
        cpal++;
 
    	if(cade[i]!=' ')
        	carcpal++;
        else
        {
        	if(carcpal%2!=0){
                palimp++;
                carcpal=0;
            }
        }
    }
 
    if(carcpal%2!=0){
    	palimp++;
        carcpal=0;
    }
 
    porcen=(palimp * 100) /cpal;
 
    return porcen;
}
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