Erro na construção do algoritmo

Alguém poderia me ajudar com essa questão por favor? Consegui construir bem as 3 primeiras, porém as duas últimas não consegui e estou tentando desde domingo tentando. Ela é Estrutura de Repetição Enquanto.

  1. Faça um programa que leia a idade e o sexo de 5 pessoas, mostrando no final:
    a) Quantos homens foram cadastrados
    b) Quantas mulheres foram cadastradas
    c) A média de idade do grupo
    d) A média de idade dos homens
    e) Quantas mulheres tem mais de 20 anos

Acho que para a D, tu pode usar a mesma ideia da solução da questão C.

1 curtida

Eu tentei fazer isso, mas da erro. Acho que devido a forma que eu construi, veja:
Var
sex: caractere
cont, id, quantidade, quant, quanti, s: inteiro
med: real

Inicio
cont <- 0
Enquanto cont <= 4 faca
Escreva ("Sexo [M/H]: ")
Leia (sex)
Escreva (“Idade: “)
Leia (id)
Escreval (”================”)
cont <- cont + 1
Se sex = “H” entao
quantidade <- quantidade + 1
senao
Se sex = “M” entao
quanti <- quanti + 1
FimSe
S <- S + id
Med <- S / 5
Escreval ("A quantidade de homens é ", quantidade)
Escreval ("A quantidade de mulheres é ", quanti )
Escreval ("A media do grupo é ", med)

Porém eu não sei o que fiz de errado

Você tem variáveis com nomes parecidos, isso vai rodar normal, mas é mais difícil de entender o código.
Que tal “quantidadeMulheres” (ou só “mulheres”), “homens”?

Qual erro está dando?

1 curtida

Já arrumei, obrigada haha
Já tentei colocar H e M como variável, já usei Escolha Caso, Se entao, etc. Porém nada funcionou, as duas últimas questões sempre me retornam o valor zero ou coloca todos os valores como um (tipo, na questão D eu coloco homens e mulheres com idade acima de 20 e ao invés do código me retornar só mulheres ele me retorna homem e mulher e me diz que existem 5 mulheres com idade maior que 20. ). Espero que você tenha entendido minha explicação hahaha

ola eu acho que isso resolve o problema
public class Problema1 {

public static void main(String[] args) {
	Scanner in = new Scanner (System.in);
	int mulher = 0;
	int mulherIdade = 0;
	int homem = 0;
	int idadeHomem = 0;
	float somaIdade = 0;
	for(int i =0; i<5; i++) {
		System.out.println("Informe a idade:");
		int idade = in.nextInt();
		somaIdade = somaIdade + idade;
		System.out.println("Informe o sexo [M or F): ");
		String sexo = in.next();
		if(sexo.equalsIgnoreCase("M")) {
			homem += 1;
			idadeHomem += idade;
		} else if (sexo.equalsIgnoreCase("F")) {
			mulher += 1;
			if(idade > 20) {
				mulherIdade += 1;
			}
			
		}
	}
	System.out.println("Homens cadastrados: "+ homem);
	System.out.println("Mulheres cadastradas: "+ mulher);
	System.out.println("Média de idade do grupo: " + (somaIdade/5));
	System.out.println("Média de idade dos homens: " + (idadeHomem/homem));
	System.out.println("Mulheres com mais de 20 anos: " + mulherIdade);
	in.close();
}

}

1 curtida

Acho que você pode criar mais uma variável para somar as idades de mulheres maiores que 20 anos.

1 curtida

Ela não está usando Java.

1 curtida

Vou tentar

Eu tentei e não saiu do zero

Mostre o código atualizado

Var
sex: caractere
cont, id, quantH, quantM, s, SOm: inteiro
med: real

Inicio
cont <- 0
Enquanto cont <= 4 faca
Escreva ("Sexo [M/H]: ")
Leia (sex)
Escreva (“Idade: “)
Leia (id)
Escreval (”================”)
cont <- cont + 1
Se sex = “H” entao
quantH <- quantH + 1
senao
Se sex = “M” entao
quantM <- quantM + 1
FimSe
S <- S + id
Med <- S / 5
Se “M” > 20 entao
SOm <- SOm + 1
FimSe
FimEnquanto
Escreval ("A quantidade de homens é ", quantidade)
Escreval ("A quantidade de mulheres é ", quanti )
Escreval ("A media do grupo é “, med)
Escreval (SOm, " Mulheres tem mais de 20 anos.” )

Por que “M” > 20?

Dentro deste “se” você pode pôr outro “se” para verificar se a idade é maior que 20, aí sim acrescentar a variável de mulheres maiores que 20.

Por que eu queria que quando fosse digitado “M” o algoritmo analisasse se era maior que 20, é errado pensar assim?

Como eu faria isso? Assim :
Se sex = “M”
quantM <- quantM + 1
Se “M” > 20 entao
SOm <- SOm + 1
FimSe

Quando está envolvido em “”, M é um tipo de texto. (Algumas linguagens podem considerar como número, mas não vem ao caso e não teria o valor da idade)

Use sua variável de idade.
Se id > 20 entao

1 curtida

Nossa moço, obrigada mais uma vez. Graças a sua explicação consegui resolver as duas questões, o senhor é um gênio haha.

1 curtida