Faça um programa que receba, de 10 pessoas:
idade e altura;
A porcentagem de pessoas com idade entre 10 e 30 anos entre as pessoas que medem mais de 1.90m.
Tentei aqui de várias formas, mas não consegui. Fiz apenas a parte que recebe os dados pelo teclado.
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){intidade,cont=1,a=0;doublealtura,porc;Scannerler=newScanner(System.in);while(cont<=10){System.out.println("Digite uma idade: ");idade=ler.nextInt();System.out.println("Digite sua altura: ");altura=ler.nextDouble();if((idade>10&&idade<30)&&(altura>1.90)){a+=1;}System.out.println(a);porc=(a/100);System.out.println(porc);if(cont>10){break;}cont++;}}}
Rodrigo_Sasaki
Use as tags para postar código, por favor.
E
entanglement
Quando for fazer contas, cuidado com a mistura de int com double, e cuidado ao dividir ints.
No seu caso, vi um probleminha na linha:
porc=a/100;
a é um inteiro e 100 é um inteiro, portanto você vai ter um valor inteiro, que provavelmente não é o que você quer (por exemplo, 33 / 100 vai dar zero, em vez de 0.33 como você estava esperando).
Matheus_terra1 like
Isso aqui da certinho :D
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){intidade,cont=1,a=0;doublealtura;Scannerler=newScanner(System.in);while(cont<=10){System.out.println("Digite uma idade: ");idade=ler.nextInt();System.out.println("Digite uma altura: ");altura=ler.nextDouble();if((idade>=10&&idade<=30)&&altura>=1.90){a++;}cont++;}System.out.println("Porcentagem: "+(double)a*100/3);}}
OBSERVAÇÕES:
1: Esse if verificado se cont > 10 é desnecessário, não vi utilidade nenhuma.
2: Você tem que colocar a impressão da porcentagem fora do while, caso o contrario ele vai imprimir a cada iteração.
3: Lembrando um pouco das aulas de porcentagem laaa da 4ª série, pra achar a porcentagem de um número você multiplica ele por 100 e divide pelo total, que no seu caso é 10.
4: usei esse casting de double, pra pegar o resultado, que é double, e imprimir ele completo, pra dar um resultado preciso, se vc quiser pode formatar a saida pra apenas algumas casas decimais.
Espero ter ajudado.
J
joao0212
packageporcentagem;importjava.util.Scanner;publicclassPorcentagem{publicstaticvoidmain(String[]args){intidade;doublealtura,porc=0;Scannerscanner=newScanner(System.in);for(inti=0;i<3;i++){System.out.println("Entre com a idade:");idade=scanner.nextInt();System.out.println("Entre com a altura:");altura=scanner.nextDouble();if((idade>10&&idade<30)&&(altura>190)){porc=i*100/3;}}System.out.println(porc);}}
Com for deu certo também!!
Ai fica ao seu critério!!
L
LuCiAnO_M
Matheus terra:
Isso aqui da certinho :D
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){intidade,cont=1,a=0;doublealtura;Scannerler=newScanner(System.in);while(cont<=10){System.out.println("Digite uma idade: ");idade=ler.nextInt();System.out.println("Digite uma altura: ");altura=ler.nextDouble();if((idade>=10&&idade<=30)&&altura>=1.90){a++;}cont++;}System.out.println("Porcentagem: "+(double)a*100/3);}}
OBSERVAÇÕES:
1: Esse if verificado se cont > 10 é desnecessário, não vi utilidade nenhuma.
2: Você tem que colocar a impressão da porcentagem fora do while, caso o contrario ele vai imprimir a cada iteração.
3: Lembrando um pouco das aulas de porcentagem laaa da 4ª série, pra achar a porcentagem de um número você multiplica ele por 100 e divide pelo total, que no seu caso é 10.
4: usei esse casting de double, pra pegar o resultado, que é double, e imprimir ele completo, pra dar um resultado preciso, se vc quiser pode formatar a saida pra apenas algumas casas decimais.
Espero ter ajudado.
Ajudou bastante.
Mas eu estou com duvida nessa conta da porcentagem.
Pensei que seria assim: a/100. Ou a/(por alguma variável com valor 100). Desse jeito o resultado fica ex: a=5/b=100...que resulta em 0,05.
Mas o seu sai diferente.
Mas obrigado, me ajudou muito.
Matheus_terra
joao0212:
packageporcentagem;importjava.util.Scanner;publicclassPorcentagem{publicstaticvoidmain(String[]args){intidade;doublealtura,porc=0;Scannerscanner=newScanner(System.in);for(inti=0;i<3;i++){System.out.println("Entre com a idade:");idade=scanner.nextInt();System.out.println("Entre com a altura:");altura=scanner.nextDouble();if((idade>10&&idade<30)&&(altura>190)){porc=i*100/3;}}System.out.println(porc);}}
Com for deu certo também!!
Ai fica ao seu critério!!
Sinto de informar, mas só de bater o olho nesse código ja da pra ver que não vai imprimir o valor desejado. O for está certo, mas você esta atribuindo a variavel "porc" um calculo de porcentagem a cada iteração do for, isso é extremamente errado. Quando a condição do if é satisfeita, você ta fazendo o contato "i" ser multiplicado por 100 e dividido pela quantidade de iterações, e isso não da o resultado esperado no final. Pra ficar certo, esse if tem que ficar fora de qualquer loop, e precisa de um contador a parte para ser incrementado dentro do loop.
L
LuCiAnO_M
Matheus terra:
Isso aqui da certinho :D
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){intidade,cont=1,a=0;doublealtura;Scannerler=newScanner(System.in);while(cont<=10){System.out.println("Digite uma idade: ");idade=ler.nextInt();System.out.println("Digite uma altura: ");altura=ler.nextDouble();if((idade>=10&&idade<=30)&&altura>=1.90){a++;}cont++;}System.out.println("Porcentagem: "+(double)a*100/3);}}
OBSERVAÇÕES:
1: Esse if verificado se cont > 10 é desnecessário, não vi utilidade nenhuma.
2: Você tem que colocar a impressão da porcentagem fora do while, caso o contrario ele vai imprimir a cada iteração.
3: Lembrando um pouco das aulas de porcentagem laaa da 4ª série, pra achar a porcentagem de um número você multiplica ele por 100 e divide pelo total, que no seu caso é 10.
4: usei esse casting de double, pra pegar o resultado, que é double, e imprimir ele completo, pra dar um resultado preciso, se vc quiser pode formatar a saida pra apenas algumas casas decimais.
Espero ter ajudado.
Ajudou bastante.
Mas eu estou com duvida nessa conta da porcentagem.
Pensei que seria assim: a/100. Ou a/(por alguma variável com valor 100). Desse jeito o resultado fica ex: a=5/b=100...que resulta em 0,05.
Mas o seu sai diferente.
Mas obrigado, me ajudou muito.
Matheus_terra
LuCiAnO_M.:
Matheus terra:
Isso aqui da certinho :D
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){intidade,cont=1,a=0;doublealtura;Scannerler=newScanner(System.in);while(cont<=10){System.out.println("Digite uma idade: ");idade=ler.nextInt();System.out.println("Digite uma altura: ");altura=ler.nextDouble();if((idade>=10&&idade<=30)&&altura>=1.90){a++;}cont++;}System.out.println("Porcentagem: "+(double)a*100/3);}}
OBSERVAÇÕES:
1: Esse if verificado se cont > 10 é desnecessário, não vi utilidade nenhuma.
2: Você tem que colocar a impressão da porcentagem fora do while, caso o contrario ele vai imprimir a cada iteração.
3: Lembrando um pouco das aulas de porcentagem laaa da 4ª série, pra achar a porcentagem de um número você multiplica ele por 100 e divide pelo total, que no seu caso é 10.
4: usei esse casting de double, pra pegar o resultado, que é double, e imprimir ele completo, pra dar um resultado preciso, se vc quiser pode formatar a saida pra apenas algumas casas decimais.
Espero ter ajudado.
Ajudou bastante.
Mas eu estou com duvida nessa conta da porcentagem.
Pensei que seria assim: a/100. Ou a/(por alguma variável com valor 100). Desse jeito o resultado fica ex: a=5/b=100...que resulta em 0,05.
Mas o seu sai diferente.
Mas obrigado, me ajudou muito.
Se você simplesmente fazer o valor do contado divido por 100 é errado, não é porcentagem.
Já que a sua dúvida agora é na parte matematica do problema, de uma pesquisadinha sobre porcentagem, é mais tranquilo. :D
J
joao0212
Matheus terra:
joao0212:
packageporcentagem;importjava.util.Scanner;publicclassPorcentagem{publicstaticvoidmain(String[]args){intidade;doublealtura,porc=0;Scannerscanner=newScanner(System.in);for(inti=0;i<3;i++){System.out.println("Entre com a idade:");idade=scanner.nextInt();System.out.println("Entre com a altura:");altura=scanner.nextDouble();if((idade>10&&idade<30)&&(altura>190)){porc=i*100/3;}}System.out.println(porc);}}
Com for deu certo também!!
Ai fica ao seu critério!!
Sinto de informar, mas só de bater o olho nesse código ja da pra ver que não vai imprimir o valor desejado. O for está certo, mas você esta atribuindo a variavel "porc" um calculo de porcentagem a cada iteração do for, isso é extremamente errado. Quando a condição do if é satisfeita, você ta fazendo o contato "i" ser multiplicado por 100 e dividido pela quantidade de iterações, e isso não da o resultado esperado no final. Pra ficar certo, esse if tem que ficar fora de qualquer loop, e precisa de um contador a parte para ser incrementado dentro do loop.
Engraçado, fiz os dois casos e os dois me retornam exatamente o mesmo valor.
Mas obrigado pela dica.
ps: Troquei o int i, para double i ...
V
VictorLacerda
então pelo que via a duvida agora é só matemática, segue uma dica que eu sempre uso para esses casos sempre pegue a razão entre os valores exemplo :
quantas pessoas o grupo “a” é menor que o grupo “b” se “a” = 3 e “b” = 10 pessoas tire a razão A/B = 3/10 = 0.3333… portanto ele é 0.3333… vesses menor quer transformar isso em porcentagem multiplique por 100, então “a” vale 33.3333% de “b” se quiser por mil multiplique por 1000, e assim em diante, mas a dica é sempre pegar a razão entre os valores
se vc fizer o contrario também da certo tipo quantas vesses B é maior que A B/A = 10/3 = 3,333 significa que B é três vezes maior que A multiplique por 100 vai que que B equivale a 333,333% de A
então só para finalizar a dica é tirar a razão entre os valores xD