Ir ao conteúdo

Posts recomendados

Postado

O que posso melhorar nesse código e não consigo descobrir porque a porcentagem está dando negativo.
 

#include <iostream>
#include <cstdlib>
#include <locale.h>

using namespace std;

int main(void)
{
setlocale(LC_ALL, "Portuguese");
float porcentagem,contador,acumulador,altura,menor,maior,media,altura_t;
int resposta,resp,i,homem,pessoas;
porcentagem, contador, acumulador, altura,menor,maior,media,altura_t=0;

contador = 0;
resp = 0;
resposta = 0;
homem = 0;

int contm = 0;
cout << "Entre com a altura, digite -1 para sair: ";
cin >> altura_t;
maior = altura_t;
menor = altura_t;

while (altura_t != -1)
{

if (altura_t == 0)
{
maior = altura_t;
menor = altura_t;
altura_t++; 
}

if (altura_t > maior)
maior = altura_t;
else if (altura_t < menor)
menor = altura_t;
cout << "Entre com a altura, digite -1 para sair: ";
altura_t++;
cin >> altura_t;
}

cout << "Entre com 1 para mulheres e 2 para homens. ";
cin >> resposta;
if (resposta == 1)
{
cout << "Entre com a altura da mulher: ";
cin >> altura; 
}
else if (resposta == 2)
homem++;

while (resposta != -1)
{
if (resposta != -1)
if (resposta == 1)
{
acumulador = acumulador + altura;
//altura++;
cout << "Entre com a altura da mulher, digite -1 para sair: ";
contm++; 
cin >> altura;
}
else if (resposta == 2)
{
homem++; 
}
cout << "Para sair digite -1, dê enter para continuar. \\n";
cout << "Escolha, 1 para mulher, 2 para homens: \\n";
cin >> resposta;
}
porcentagem = contm * altura_t / 100;
//porcentagem = (acumulador * contm ) / 100;
//z = (x / y) * 100;
media = acumulador / contm;
cout << "A maior altura é: " << maior << " e a menor altura é: " << menor << "\\n";
cout << "O número de homens é de:" << homem << "\\n";
cout << "A porcentagem de mulheres em relação ao total de pessoas é de: " << porcentagem << "\\n";
cout << "A média de altura das mulheres é de: " << media << endl;

}

 

  • Curtir 1
Postado

@phk1     o resultado está dando negativo porque você está usando a variável altura_t para pegar a altura e ao mesmo tempo sair do loop while, sendo que para sair do while essa variável precisa ser igual a menos 1,  e depois usa essa mesma variável para fazer o cálculo, precisa usar outra variável .   pelo que entendi do programa você quer saber  é :

1 - a maior altura

2 - a quantidade de homens

3 - porcentagem de mulheres do total de pessoas 

4 - a média de altura de mulheres 

então seu código seria assim :

#include <stdio.h>
#include <locale.h>
int main(){
    setlocale(LC_ALL,"");
    int altura,opcao,maior=0,menor=9999999;
    float m=0,porcentagem,media,homens=0,mulheres=0;
    do{
        printf("Digite 1 para homens e 2 para mulheres ou -1 para sair ");
        scanf("%d",&opcao);
        if(opcao==1){
            homens++;
            printf("Digite A Altura ");
            scanf("%d",&altura);
        }
        else{
            if(opcao==2){
                mulheres++;
                printf("Digite A Altura ");
                scanf("%d",&altura);
                m+=altura;
            }
        }
        if(maior<altura)maior=altura;
        if(menor>altura)menor=altura;
    }while(opcao > 0);
    porcentagem = 100 * mulheres / (homens+mulheres) ;
    media = m / mulheres;
    printf("\nA maior altura é------------------------------------------------> %d\n",maior);
    printf("A menor altura é -----------------------------------------------> %d\n",menor);
    printf("O número de homens é -------------------------------------------> %.0f\n",homens);
    printf("A porcentagem de mulheres em relação ao total de pessoas é de --> %.0f por cento\n",porcentagem);
    printf("A média de altura das mulheres é de ----------------------------> %0.f\n",media);
    return 0;
}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...