Ir ao conteúdo

C++ algoritmo de um grupo calcular a maior e a menor altura


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

algoritmo contendo a altura e o sexo (masculino, feminino) que calcule e escreva: a maior e a menor altura do grupo;
A média de altura das mulheres ; O número de homens;

 

O código não da erro mas não consigo o resultado que quero alguém pode me ajudar, o que esta errado? estou estudando c+

acho que pode ser algo no laço for.

#include<stdio.h>
#include<string.h>

int main(){
int x,i,numhomem=0,nummulher=0;
float h,media=0,somahm=0,maioraltura=0,menoraltura=0;
char sexo[12];

printf("digite o numero do grupo:\n");
scanf("%d",&x);
  for(i=0;i<x;i++){
printf("digite sua altura:\n");
scanf("%f",&h);
printf("digite qual o seu sexo:\n");
scanf("%s",&sexo);
  if(strcmp(sexo,"feminino")==0){
  	nummulher++;
  	somahm=h+somahm;
  media=somahm/nummulher;
   }
  else if (strcmp(sexo,"masculino")==0){
  	numhomem++;
   }
  if(h>maioraltura){
  	maioraltura= h;
  	menoraltura= maioraltura;
   }
else if (h<menoraltura){
	menoraltura=h;
   }
 } 
printf("maior altura: %.2f\n",&maioraltura);
printf("menor altura : %.2f\n",&menoraltura);
printf("media altura mulheres: %.2f\n",&media);
printf("numero de homens: %d \n",&numhomem);
return 0;

}
#include<stdio.h>
#include<string.h>

int main(){
int x,i,numhomem=0,nummulher=0;
float h,media=0,somahm=0,maioraltura=0,menoraltura=0;
char sexo[12];

printf("digite o numero do grupo:\n");
scanf("%d",&x);
  for(i=0;i<x;i++){
printf("digite sua altura:\n");
scanf("%f",&h);
printf("digite qual o seu sexo:\n");
scanf("%s",&sexo);
  if(strcmp(sexo,"feminino")==0){
      nummulher++;
      somahm=h+somahm;
  media=somahm/nummulher;
   }
  else if (strcmp(sexo,"masculino")==0){
      numhomem++;
   }
  if(h>maioraltura){
      maioraltura= h;
      menoraltura= maioraltura;
   }
else if (h<menoraltura){
    menoraltura=h;
   }
 } 
printf("maior altura: %.2f\n",&maioraltura);
printf("menor altura : %.2f\n",&menoraltura);
printf("media altura mulheres: %.2f\n",&media);
printf("numero de homens: %d \n",&numhomem);
return 0;

}

 

  • Obrigado 1
  • Solução
Postado

@raphu_   olá , esse código não é de C++ , não ,  ele realmente é da linguagem C ,   a menor altura , você pode  usar um if para pegar a primeira altura inserida pelo usuário , e a partir dessa vai testando as seguintes ,  pode ser assim :

#include    <stdio.h>
#include    <conio.h>
#include    <float.h>
#include    <iso646.h>
#include    <stdlib.h>
#include    <string.h>
int main    ( )    
{
    int   x                ;
    int   i                ;
    int   numhomem    = 0  ;
    int   nummulher   = 0  ;
    float h           = 0.0;
    float media       = 0.0;
    float somahm      = 0.0;
    float maioraltura = 0.0;
    float menoraltura = 0.0;
    char  sexo[12]    =  "";

    printf("digite o numero do grupo: ");
    fflush(stdin);          /// quando muda o tipo de dado da leitura com scanf
    scanf("%d", & x );      /// ele pula essa instruCAo e vai para a outra linha
    for(i=0; i<x; i++)
    {
        printf("digite sua altura: ");
        fflush(stdin);      /// quando muda o tipo de dado lido por scanf
        scanf("%f", & h );  /// costuma pular para outra linha
        if(i==0)            /// só pega na primeira entrada
        {
            menoraltura = h; /// só pega a primeira altura digitada
            maioraltura = h; /// e inicializa as duas variAveis
        }
        printf("digite qual o seu sexo: ");
        fflush(stdin);       /// limpa o buffer em ealguns casos
        scanf("%s", sexo);   /// ler String não precisa desse sImbolo   "&"
                             /// pois já tem o endereCo da variAvel
        if(strcmp(sexo,"feminino") == 0 )
        {
            printf("Mulher %.2f\n",h);
            nummulher++;
            somahm = h + somahm;
            ///media=somahm/nummulher;  isso aqui melhor colocar depois do laCo for
        }
        else
        {
            if (strcmp(sexo,"masculino") == 0 )
            {
                printf("Homen %.2f\n",h);
                numhomem++;
            }
        }
        if(h > maioraltura)
        {
            maioraltura = h;
            ///menoraltura= maioraltura;
        }
        else
        {
            if ( h < menoraltura )
            {
                menoraltura = h;
            }
        }
    }

    media = somahm / nummulher;
    printf("maior altura -----------: %.2f\n", maioraltura); /// não precisa desse sImbolo "&"no printf  , não
    printf("menor altura -----------: %.2f\n", menoraltura);
    printf("media altura mulheres --: %.2f\n", media      );
    printf("numero de homens -------: %3d \n", numhomem   );
    return 0;
}

 

  • Obrigado 1
  • 4 meses depois...
Postado

Olá, observem.

 

O Problema

Algoritmo contendo a altura e o sexo (masculino, feminino) que calcule e escreva.

 

A maior e a menor altura do grupo é:
A média de altura das mulheres  ... é: 

O número de homens                  ... é:

 

Uma Analise

Há alguma indicação de interação (dado-a-dado) com o usuário?

— Acho que não, e nem há indicação do tamanho do grupo.

 

A condição de parada do algoritmo, supostamente, não é um limite quantitativo, mas sim, talvez, um sinal (flag): nota-se que a informação é composta dum par de dados (altura e sexo: sendo “masculino” ou “feminino”) e o grupo, aparentemente, é uma corda de informação. E sabe-se que as cordas acabam em 0 ('\0').

 

 

***Para min, deve-se uma revisão de prompt.

 

 

 

 

  • Obrigado 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...