Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
phk1

C++ Melhorar código resultado dando negativo.

Recommended Posts

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;

}

 

Editado por Simon Viegas
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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;
}

 

Editado por devair1010
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prazer. Correto. Vou ler o código e ver no que eu errei. Obrigado pela ajuda.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×