Porcentagem

12 respostas
L

Olá pessoal, boa tarde.

Gostaria de saber como ficaria este exercício:

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.

Agradeço.

12 Respostas

Rodrigo_Sasaki

Mostre aí o que você fez, e o que deu errado

L
Rodrigo Sasaki:
Mostre aí o que você fez, e o que deu errado

esse é "a" é um acumulador.

import java.util.Scanner;
public class Teste {

    public static void main(String[] args) {
        int idade, cont = 1, a = 0;
        double altura, porc;
        
        Scanner ler = new Scanner(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

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_terra

Isso aqui da certinho :D

import java.util.Scanner;

public class Teste {

	public static void main(String[] args) {
		int idade, cont = 1, a = 0;
		double altura;

		Scanner ler = new Scanner(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
package porcentagem;

import java.util.Scanner;

public class Porcentagem {

    public static void main(String[] args) {
        int idade;
        double altura, porc = 0;
        
        Scanner scanner = new Scanner(System.in);
        
        for(int i = 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
Matheus terra:
Isso aqui da certinho :D
import java.util.Scanner;

public class Teste {

	public static void main(String[] args) {
		int idade, cont = 1, a = 0;
		double altura;

		Scanner ler = new Scanner(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:
package porcentagem;

import java.util.Scanner;

public class Porcentagem {

    public static void main(String[] args) {
        int idade;
        double altura, porc = 0;
        
        Scanner scanner = new Scanner(System.in);
        
        for(int i = 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
Matheus terra:
Isso aqui da certinho :D
import java.util.Scanner;

public class Teste {

	public static void main(String[] args) {
		int idade, cont = 1, a = 0;
		double altura;

		Scanner ler = new Scanner(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
import java.util.Scanner;

public class Teste {

	public static void main(String[] args) {
		int idade, cont = 1, a = 0;
		double altura;

		Scanner ler = new Scanner(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
Matheus terra:
joao0212:
package porcentagem;

import java.util.Scanner;

public class Porcentagem {

    public static void main(String[] args) {
        int idade;
        double altura, porc = 0;
        
        Scanner scanner = new Scanner(System.in);
        
        for(int i = 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

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

Criado 12 de abril de 2013
Ultima resposta 13 de abr. de 2013
Respostas 12
Participantes 6