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:  
ngiovana

C Exercício de estrutura de repetição

Recommended Posts

Estou aprendendo a programar em C e esse exercício me confundiu muito:

 

Tem-se um conjunto de dados contendo a altura e o sexo (masculino, feminino) de
50 pessoas. Faça um algoritmo que calcule e escreva:
• A maior e a menor altura do grupo;
• A média de altura das mulheres;
• O número de homens.

 

Acho que compliquei muito pra fazer o código, e além disso, no caso da pessoa digitar errado na hora de escolher o sexo ele contabiliza do mesmo jeito (se digitar errado 3 vezes ela só pode registrar a informação de 47 pessoas).

#include <stdio.h>
#include <stdlib.h>

void main (){
float ah,am,maiah=0,maiam=0,menah=3,menam=3,mdam=0;
int nh=0,nm=0,i=1,caso;
	for (i=1;i<=50;i++){             
	printf ("Escolha uma opção: \n1- Masculino\n2- Feminino\n");
	scanf ("%d",&caso);
		switch (caso){
			case 1:
				printf ("Digite sua altura: ");
				scanf ("%f",&ah);
					if (ah>maiah){
						maiah = ah;
					}
					if (ah<menah){
						menah = ah;
					}
					nh++;
			break;
			case 2:
				printf ("Digite sua altura: ");
				scanf ("%f",&am);
				mdam = mdam + am;
					if (am>maiam){
						maiam = am;
					}
					if (am<menam){
						menam = am;
					}
					nm++;
			break;
			default:
				printf ("Erro! Tente novamente.");
			}
		}
		if (maiah>maiam){
			printf ("A maior altura do grupo é: %f e é de um homem.\n",maiah);
		}
		if (maiah<maiam){
			printf ("A maior altura do grupo é: %f e é de uma mulher.\n",maiam);
		}
		if (maiah==maiam) {
		    	printf ("A maior altura do grupo é: %f, uma mulher e um homem medem esta mesma altura.\n",maiah);
			}	
		
		if (menah<menam){
			printf ("A menor altura do grupo é : %f e é de um homem.\n",menah);
		}
		if (menah>menam){
				printf ("A menor altura do grupo é: %f e é de uma mulher.\n", menam);
			}
		if (menah==menam) {
				printf ("A menor altura do grupo é: %f, uma mulher e um homem medem esta mesma altura.\n",menam);
			}
		
		printf ("A média da altura das mulheres é de %f\n",mdam/nm);
		printf ("O número de homens é de %d",nh);
			
	}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde. A pergunta sobre o sexo você pode colocar dentro de um Do..While obrigando o usuário a digitar uma das duas alternativas, na condição de ficar preso nesse laço até digitar a informação correta. Talvez tenha outras maneiras de fazer esse teste.

Acho que do jeito que você fez ele contabiliza mesmo mostrando a mensagem de erro pois conta uma iteração (uma volta no laço de repetição).

 

Outra coisa.

Você quer saber a maior e a menor altura do grupo. Você pode fazer a pergunta de altura e essas comparações antes do switch case, para os 2 sexos ao mesmo tempo, não precisando criar dezenas de variáveis só para isso. Assim, você criaria uma maiorAltura e menorAltura somente.

Dentro do CASE das mulheres você pode usar uma variável de somaAlturaMulheres e uma contaMulheres. Ao final do programa você faz a média simples.

Para saber o número de homens ficou certo. É só uma variável incrementável (nh+).

Eu usaria nomes de variáveis mas claras de ler, como 'numeroHomens' ou 'numHomens' ou 'quantHomens'.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada, agora ficou muito mais simples!

#include <stdio.h>
#include <stdlib.h>

void main (){
float maiorAltura=0,menorAltura=3,alturaMulheres=0,h;
int nh=0,nm=0,i=1,caso;
	for (i=1;i<=5;i++){ 
	printf ("Digite sua altura: \n");
	scanf ("%f",&h);
	if (h>maiorAltura){
		maiorAltura = h;
	}
	if (h<menorAltura){
		menorAltura = h;
	}            
	do{	
	printf ("Escolha uma opção: \n1- Masculino\n2- Feminino\n");
	scanf ("%d",&caso);
	if (caso != 1 && caso != 2){
		printf ("Erro! Digite novamente.\n");
	}
	}while (caso != 1 && caso != 2);
		switch (caso){
			case 1:
					nh++;
			break;
			case 2:
				alturaMulheres = alturaMulheres + h;
					nm++;
			break;
			
			}
		}
		printf ("A maior altura do grupo é: %f\n",maiorAltura);
		printf ("A menor altura do grupo é: %f\n",menorAltura);
		printf ("A média da altura das mulheres é: %f\n",alturaMulheres/nm);
		printf ("O número de homens é: %d",nh);
	}

 

  • Curtir 3

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






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

×