Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

_felipecoelho

Estrutura de repetição - loop não acontece

Recommended Posts

Olá.

 

Estou com um problema no seguinte exercício.

O loop = 10, declarado no for, não acontece, o que fiz de errado?

 

 

Tem-se um conjunto de dados contendo a altura e o sexo (masculino, feminino) de 10 pessoas. Fazer um programa que calcule e escreva:

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 número de mulheres.

 

 

#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int cont=0,ch=0,cm=0;
float altura,mh=0,maxh=-1,minh=0,mm=0,maxm=-1,minm=0;
string sexo;
cout <<"[GRUPO]\nDigite a altura e sexo das 10 pessoas.\n\n";
for (cont=0;cont<=10;cont++);
{
cout <<"Altura [cm]: ";
cin >>altura;
cout <<"Sexo [F/M]: ";
cin >>sexo;
if (sexo=="F")
{
mm=mm+altura;
cm++;
if (altura >= maxm)
maxm=altura;
if (altura <= minm)
minm=altura;
}
else
if (sexo=="M")
{
mh=mh+altura;
ch++;
if (altura >= maxh)
maxh=altura;
if (altura <= minh)
minh=altura;
}
else
{
cout <<"\nSexo invalido!\nSexo:";
}
}
if (maxm >= maxh)
cout <<"\n- A maior altura e: "<<maxm<<";"<<endl;
else
cout <<"\n- A maior altura e: "<<maxh<<";"<<endl;
if (minm >= minh)
cout <<"- E a menor altura e: "<<minm<<";"<<endl;
else
cout <<"- E a menor altura e: "<<minh<<";"<<endl;
if (cm!=0)
{
mm=mm/cm;
cout <<"- A media de altura das mulheres e: "<<mm<<";"<<endl;
}
cout <<"- O numero de homens e: "<<ch<<";"<<endl;
cout <<"- E o de mulheres e: "<<cm<<"."<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom usei o loop while e consegui olha ai :

-----------

 

 

#include <cstdlib>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int cont=1,ch=0,cm=0;
    float altura,mh=0,maxh=-1,minh=0,mm=0,maxm=-1,minm=0;
    string sexo;
 
    cout <<"[GRUPO]\nDigite a altura e sexo das 10 pessoas.\n\n";
    
  while(cont <=10)
    {
    cout <<"Altura [cm]: ";    
    cin >>altura;
    cout <<"Sexo [F/M]: ";
    cin >>sexo;
    system("cls");
    if (sexo=="F")
    {
     mm=mm+altura;
     cm++;
     if (altura >= maxm)
      maxm=altura;
     if (altura <= minm)
      minm=altura;
    }
    else
        if (sexo=="M")
        {
         mh=mh+altura;
         ch++;
         if (altura >= maxh)
            maxh=altura;
         if (altura <= minh)
            minh=altura;
        }
        else
        {
        cout <<"\nSexo invalido!\nSexo:";
        }
        
        cont++;
    }
    
    if (maxm >= maxh)
       cout <<"\n- A maior altura e: "<<maxm<<";"<<endl;
    else
        cout <<"\n- A maior altura e: "<<maxh<<";"<<endl;
    if (minm >= minh)
       cout <<"- E a menor altura e: "<<minm<<";"<<endl;    
    else
        cout <<"- E a menor altura e: "<<minh<<";"<<endl;
    if (cm!=0)
    {
     mm=mm/cm;
     cout <<"- A media de altura das mulheres e: "<<mm<<";"<<endl;
    }
    cout <<"- O numero de homens e: "<<ch<<";"<<endl;
    cout <<"- E o de mulheres e: "<<cm<<"."<<endl;
    
         getch();
       return EXIT_SUCCESS;
}
 
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

_felipecoelho,

 

Retire o ponto-e-vírgula no final da linha do for. Em C/C++, o ponto-e-vírgula indica fim daquela linha de código.

 

Portanto o que está acontecendo é que chega na linha e executa for, mas sem executar as instruções do bloco a seguir.

Está apenas incrementando o cont.

 

Para visualizar isso, recomendo que depure o código. E execute esse for passo-a-passo.

 

Para corrigir. Erra assim:

for (cont=0;cont<=10;cont++);

 

Deve ficar assim:

for (cont=0;cont<=10;cont++)

 

Espero que tenha ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi.

As duas respostas funcionaram, obrigado jorge danilo e GBecker!!
Irei acatar a instrução do GBecker, pois fica "menor" e não foge do laço que eu desejava, o for.

Outra dúvida recorrente é quanto a menor altura, não exibe, digo, diz-se 0...

Acredito que o erro não ocorre no "if (minm >= minh)" e sim quando é para armazenar o valor na váriavel

 

if (altura <= minm)

minm=altura;

 

&&

 

if (altura <= minh)

minh=altura;

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.