• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

tuasite

LER NUMEROS E DIZER PERCENTAGEM MAIOR QUE ZERO

4 mensagens neste tópico

Boas pessoal quem em pode ajudar com este código ele só não me faz o calculo na parte da percentagem, o código é o seguinte;

int main()
{
    int count,cm10,num;
    count=0;
    cm10=0;
    do
    {
printf("Digite um numero:\n");
scanf("%d",&num);
count=count+1;
if (num>10)
        cm10=cm10+1;
    }
    while (num>0);
    printf("Lidos %d numeros validos\n",count-1);
    printf("Lidos %d numeros > 10\n",cm10);
    printf("Percentagem>10 é %d \n",cm10/(count-1)*100);
    return 0;
}

Obrigado  :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tocas aqui num ponto muito importante.

As operações aritméticas são efectuadas tendo em conta o tipo das variáveis envolvidas. Como estás a dividir dois inteiros, é feita a divisão inteira do número. Para teres a divisão "exacta", tens de converter um dos números para float ou double.

count--;
double percentagem = ((double) cm10 ) / count * 100;  // ou  cm10 * 100.0 / count , ao multiplicar por 100.0 o resultado e' um numero real.
printf("Percentagem>10 e' %d \n",(int) percentagem);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

printf("Percentagem>10 é %d \n",100*cm10/(count-1));

Estás a fazer a divisão inteira, e cm10 é sempre menor ou igual a count, logo, obtem-se 0 ou 1 (que multiplicado por 100, dá 0 ou 100). Multiplicares primeiro resolve o problema (os arredondamentos serão todos por defeito), mas o ideal seria usares floats.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas amigos ja esta a funcionar a 100%, Obrigado mais uma vez...  :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora