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

16/02/2018

1

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;

}
Responder

Posts

28/02/2018

Paulo

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

using namespace std;

int main(void)
{
setlocale(LC_ALL, "Portuguese");
float porcentagem,m,media,homens,mulheres,altura,maior,menor;
int escolha,pessoas,opcao;
porcentagem,altura,menor,maior,media,homens,mulheres=0;

cout << "Entre com a altura da pessoa: ";
cin >> altura;
maior = altura;
menor = altura;
//ler nvezes;
//while (cont != nvezes)
//instruçao
//cont++;
while (opcao != -1)
{

if (altura > maior)
maior = altura;
else if (altura < menor)
menor = altura;
cout << "Entre com a altura: ";
cin >> altura;
altura++;
cout << "Entre com -1 para encerrar: ";
cin >> opcao;
}

while (escolha != -1)
{

if (opcao == 1)

{
m = m + altura;
cout << "Entre novamente com a altura da mulher: \\n";
cin >> altura;
}
else if (opcao == 2)
{
homens++;
cout << "Entre novamente com qunatidade de homens: \\n";
cin >> homens;
}

cout << "Entre com 1 para mulheres ou 2 para homens: \\n";
cin >> opcao;
cout << "Digite -1 para sair: \\n";
cin >> escolha;
if (escolha != -1)
homens++;
}
porcentagem = mulheres * 100 / (homens + mulheres);
media = m / mulheres;

cout << "A maior altura é: " << maior << " e a menor altura é: " << menor << "\\n";
cout << "O número de homens é de:" << homens << "\\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;

}
Responder

28/02/2018

Paulo

Ainda estava com erro. Só tem um problema, quando não tem entrada para homens, o resultado sai em formato científico. O resto está ok.
#include <iostream>
#include <cstdlib>
#include <locale.h>

using namespace std;

int main(void)
{
setlocale(LC_ALL, "Portuguese");
float porcentagem,m,media,homens,mulheres,altura,maior,menor;
int escolha,pessoas,opcao;
porcentagem,altura,menor,maior,media,homens,mulheres,escolha=0;

cout << "Entre com a altura da pessoa, -1 para encerrar: ";
cin >> altura;
maior = altura;
menor = altura;

while (altura != -1)
{
cout << "Entre com a altura ou -1 para encerrar: ";
cin >> altura;
if (altura > maior)
maior = altura;
else if (altura < menor)
menor = altura;

if (altura != -1)
altura++;
//cin >> opcao;
}


while (opcao != -1)
{
cout << "Entre com 1 para altura das mulheres ou 2 para homens, -1 para sair. ";
cin >> opcao;
if (opcao == 1)
{
m = m + altura;
cout << "Entre novamente com a altura da mulher: \\n";
cin >> altura;
mulheres++;
}
else if (opcao == 2)
{
cout << "Entre novamente com qunatidade de homens: \\n";
cin >> homens;
homens++;
}

if (opcao != -1)
opcao++;
}

porcentagem = mulheres * 100 / (homens + mulheres);
media = m / mulheres;

cout << "A maior altura é: " << maior << " e a menor altura é: " << menor << "\\n";
cout << "O número de homens é de:" << homens << "\\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;
}
Responder