Jump to content
Fórum Script Brasil
  • 0

Enquanto - While em C


ProjectWesley

Question

Alguém poderia me ajudar neste exercício:

FUPCQ – Tendo-se um conjunto de dados, de tamanho indeterminado, contendo a
altura e o sexo (M ou F) de um grupo de pessoas. Faça um programa que calcule e
mostre:
a. a maior e a menor altura do grupo;
b. a média de altura das mulheres;
c. o número de homens;
d. o sexo da pessoa mais alta;
O usuário deve responder se deseja inserir informações de outra pessoa.
Obrigado, desde já!!!
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Fiz um código básico para esse programa em C++:

#include <iostream>
#include <vector>
#include <locale>
#include <limits>

using namespace std;

vector<float> Alturas_dos_Homens;
vector<float> Alturas_das_Mulheres;
float Numero_de_Homens = 0;
float Numero_de_Mulheres = 0;
float Maior_altura_dos_Homens = 0;
float Menor_altura_dos_Homens = 0;
float Maior_altura_das_Mulheres = 0;
float Menor_altura_das_Mulheres = 0;

void Perguntar_Valores(vector<float>&, vector<float>&);
void Calcular_maior_e_menor_alturas(vector<float>&, vector<float>&);
void Media_de_altura_das_Mulheres(float, float);
void Quantidade_de_Homens(float);
void Sexo_da_pessoa_mais_alta(float,float);

void Perguntar_Valores(vector<float>& Alturas_dos_Homens, vector<float>& Alturas_das_Mulheres)
{
    int i = 0; int j = 0; int Sexo; int Sim_ou_Nao = 0; bool Continuar = true;
    while ( Continuar == true)
    {
     Sexo = 0;
    cout << "Digite o sexo da pessoa (1 - Homem / 2 - Mulher)" << endl;
    cin >> Sexo;
    cin.sync();
    if (Sexo == 1)
    {
        Numero_de_Homens++;
        Alturas_dos_Homens.resize(Numero_de_Homens);
        cout << "\nDigite a altura da pessoa (em metros)." << endl;
        cin >> Alturas_dos_Homens[i];
        if (!cin)
        {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Valor inválido." << endl << endl;
        Numero_de_Homens--;
        Perguntar_Valores(Alturas_dos_Homens,Alturas_das_Mulheres);
        }
        i++;
    }
    else if (Sexo == 2)
    {
        Numero_de_Mulheres++;
        Alturas_das_Mulheres.resize(Numero_de_Mulheres);
        cout << "\nDigite a altura da pessoa (em metros)." << endl;
        cin >> Alturas_das_Mulheres[j];
        if (!cin)
        {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Valor inválido." << endl << endl;
        Numero_de_Mulheres--;
        Perguntar_Valores(Alturas_dos_Homens,Alturas_das_Mulheres);
        }
        j++;
    }
    else if ( Sexo != 1 || Sexo != 2 || !cin)
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Opção inválida" << endl << endl;
        Perguntar_Valores(Alturas_dos_Homens,Alturas_das_Mulheres);
    }
    cout <<"\nDeseja inserir informações de outra pessoa? (1 - Sim/ 2 - Não) " << endl;
    cin >> Sim_ou_Nao;
    cin.sync();
    cout << "\n\n";
    switch(Sim_ou_Nao)
    {
        case 1:
        Continuar = true;
        break;
        case 2:
        Continuar = false;
        break;
        default:
        cout << "Opção inválida. Continuando o programa" << endl << endl;
        Continuar = false;
    }
}
    Calcular_maior_e_menor_alturas(Alturas_dos_Homens, Alturas_das_Mulheres);
}

void Calcular_maior_e_menor_alturas(vector<float>& Alturas_dos_Homens, vector<float>& Alturas_das_Mulheres)
{
    int i = 0; int j = 0;
    float Maior_altura = 0; float Menor_altura = 0;
    if (Numero_de_Homens > 1)
    {
    for (i = 0; i < Numero_de_Homens; i++)
    {
        if ( i != Numero_de_Homens - 1)
        {
        if (Alturas_dos_Homens[i+1] > Alturas_dos_Homens[i])
        {
            Maior_altura_dos_Homens = Alturas_dos_Homens[i+1];
            Menor_altura_dos_Homens = Alturas_dos_Homens[i];
        }
        else
        {
            Maior_altura_dos_Homens = Alturas_dos_Homens[i];
            Menor_altura_dos_Homens = Alturas_dos_Homens[i+1];
        }
        }
        else
        {
            if ( Alturas_dos_Homens[i] > Maior_altura_dos_Homens)
            {
                Maior_altura_dos_Homens = Alturas_dos_Homens[i];
            }
        }
    }
    }
    else
    {
        Maior_altura_dos_Homens = Menor_altura_dos_Homens = Alturas_dos_Homens[0];
    }
    if (Numero_de_Mulheres > 1)
    {
    for (j = 0; j < Numero_de_Mulheres; j++)
    {
        if ( j != Numero_de_Mulheres-1)
        {
         if (Alturas_das_Mulheres[j+1] > Alturas_das_Mulheres[j])
        {
            Maior_altura_das_Mulheres = Alturas_das_Mulheres[j+1];
            Menor_altura_das_Mulheres = Alturas_das_Mulheres[j];
        }
        else
        {
            Maior_altura_das_Mulheres = Alturas_das_Mulheres[j];
            Menor_altura_das_Mulheres = Alturas_das_Mulheres[j+1];
        }
        }
        else
        {
            if (Alturas_das_Mulheres[j] > Maior_altura_das_Mulheres)
            {
                Maior_altura_das_Mulheres = Alturas_das_Mulheres[j];
            }
        }
    }
    }
    else
    {
      Maior_altura_das_Mulheres = Menor_altura_das_Mulheres = Alturas_das_Mulheres[0];
    }

    if (Maior_altura_dos_Homens > Maior_altura_das_Mulheres)
    {
        Maior_altura = Maior_altura_dos_Homens;
    }
    else
    {
        Maior_altura = Maior_altura_das_Mulheres;
    }
    if (Menor_altura_dos_Homens < Menor_altura_das_Mulheres)
    {
        Menor_altura = Menor_altura_dos_Homens;
    }
    else
    {
        Menor_altura = Menor_altura_das_Mulheres;
    }

    cout << "\n\nA maior altura do grupo é: " << Maior_altura << "m" << endl;
    cout << "\n\nA menor altura do grupo é: " << Menor_altura << "m" << endl;
}

void Media_de_altura_das_Mulheres(vector<float>& Alturas_das_Mulheres, float Numero_de_Mulheres)
{
    int i = 0;
    float Soma_das_alturas_das_Mulheres = 0;
    for(i = 0; i < Numero_de_Mulheres; i++)
    {
        Soma_das_alturas_das_Mulheres += Alturas_das_Mulheres[i];
    }

    cout << "\n\nA média das alturas das mulheres é: " << (Soma_das_alturas_das_Mulheres)/(Numero_de_Mulheres) << "m" << endl;
}

void  Quantidade_de_Homens (float Numero_de_Homens)
{
    cout << "\n\nO numero de homens é: " << Numero_de_Homens << endl << endl;
}

void Sexo_da_pessoa_mais_alta (float Maior_altura_dos_Homens, float Maior_altura_das_Mulheres)
{
    if (Maior_altura_dos_Homens > Maior_altura_das_Mulheres)
    {
        cout << "A pessoa com a maior altura ( " << Maior_altura_dos_Homens << "m ) é um homem.";
    }
    else
    {
        cout << "A pessoa com a maior altura ( " << Maior_altura_das_Mulheres << "m ) é uma mulher.";
    }

}

int main()
{
    setlocale(LC_ALL, "Portuguese");
    Perguntar_Valores(Alturas_dos_Homens,Alturas_das_Mulheres);
    Media_de_altura_das_Mulheres(Alturas_das_Mulheres, Numero_de_Mulheres);
    Quantidade_de_Homens(Numero_de_Homens);
    Sexo_da_pessoa_mais_alta(Maior_altura_dos_Homens, Maior_altura_das_Mulheres);
    cin.get();
    return 0;
}

Poste a sua tentativa para que possamos comparar os códigos e a lógica e melhorar o programa.

Att.,
Pedro

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...