Problemas com while

11 respostas
A

Tenho um exércicio para fazer usando while, fiz ele só que me perco na hora de fazer o calculo…


Ana tem 1,5 metros e cresce 2 cm por ano, enquanto Zé tem 1,1 metros e cresce 3 centímetros por ano. Construa um programa que calcule e mostre quantos anos serão necessários para que Zé seja maior que Ana.

O programa que eu fiz é esse,mais acho que meu erro começa com o conteudo dentro do While…

import javax.swing.*;

public class Altura {
        
    
    public static void main(String[] args) {
        String nome_homem,nome_mulher;
        double altura_homem,altura_mulher;
        int anos_necessarios,anos=0,homem_cresce=3,mulher_cresce=2;
        
        nome_homem=JOptionPane.showInputDialog("Digite o nome do homem");
        altura_homem=Double.parseDouble(JOptionPane.showInputDialog("Digite a altura do homem"));
        
        nome_mulher=JOptionPane.showInputDialog("Digite o nome do mulher");
        altura_mulher=Double.parseDouble(JOptionPane.showInputDialog("Digite a altura do mulher"));
        
        while (altura_homem>altura_mulher){
        
        	
        	 anos=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano"));
        	 
        
        	 
        	 
        	 
        }
        
       System.out.println ("os anos necessarios são"+anos);
        
        
    }
}

11 Respostas

Andre_Brito

Oi.
Acho que você não entendeu muito bem o problema.
Se a Ana cresce 2 cm por ano e Zé, 3, você deve iterar enquanto a altura do Zé seja menor que a da Ana. Dentro da estrutura de repetição, você deve somar 0.2 na altura de Ana e 0.3 na altura de Zé. Além disso, deve incrementar uma variável (por exemplo, anos), para, no final apresentar o valor. Portanto, falta criar uma nova variável inteira, arrumar o cabeçalho do while e fazer os cálculos dentro do while.

A

A questão é que eu não sei fazer a conta para achar quantos anos serão necessários.

Z

vê se ajuda....

import javax.swing.*;   
  
public class Altura {   
           
       
    public static void main(String[] args) {   
        String nome_homem,nome_mulher;   
        double altura_homem,altura_mulher;   
        int anos=0;   
           
        nome_homem=JOptionPane.showInputDialog("Digite o nome do homem");   
        altura_homem=Double.parseDouble(JOptionPane.showInputDialog("Digite a altura do homem"));   
           
        nome_mulher=JOptionPane.showInputDialog("Digite o nome do mulher");   
        altura_mulher=Double.parseDouble(JOptionPane.showInputDialog("Digite a altura do mulher"));   
           
        while (altura_homem < altura_mulher){   
              
               altura_homem += 3;
               altura_mulher += 2;
                
               anos++;
    
        }   
           
       System.out.println ("os anos necessarios são"+anos);   
           
           
    }   
}
A

Tá melhor que o meu,mais o resultado da 0.o certo seria 4 anos para que a altura do homem fique maior que a da mulher…

renzonuccitelli

Isso que o André te repondeu. quem vai achar é o programa, simulando os anos (em cada laço) somando a altura que cada um cresce. Aí qdo a altura de um ultrapassar a dos outro, vc terá o número de anos. Apesar de nao estar explicito, é provavelmente assim que quem fez o enunciado deseja que vc faça.
Caso contrário, vc poderia fazer via sistema:

Ana: alturaDeAna=1.5 +0.02ano
Zé/; alturaDoZe=1.1+0.03
ano.

Condição: alturadoDoZe>alturaDeAna.

Substituindo as eq na condiçao:

1.1+0.03ano>1.5+0.02ano => 0.01ano>0.4 => ano>40 anos

renzonuccitelli

Acho que deve ter errado no enunciado, para dar 4 anos, a condição teria que ser eles terem o mesmo tamanho e uma das duas coisas:

  1. a diferença de altura entre eles tem que ser de 4 cm
  2. Ze cresce 30 cm por ano e Ana 20.

Talvez tenha se confundido no enunciado.

edineimanica
dentro do for tem que ser

Se ele cresce 30 centimetros e ela 20 centimetros

altura_homem += 0.3;

altura_mulher += 0.2;
A

A culpa é da professora,foi ela que passo a lista…eu fiz na minha cabeça assim

ela tem 1.5 + 1 ano =1.7 +1ano=1.9 +1ano=1.10 +1ano=1.12

ele tem 1.1 +1 ano=1.4 +1ano=1.7 +1ano=1.10 +1ano=1.13

ele ficaria mais alto no 4 ano…Só que isso eu não consegui aplica no programa.

renzonuccitelli

Então é a opção 2, ele cresce 30 cm por ano e ela 20. E Na realidade, no 4 ano eles estariam do mesmo tamanho, caso em que teria quer ser usado >= na inequaçao. Como ela quer maior, seria no 5 ano…

Andre_Brito

Mais que isso é injusto.

public class Altura
{
        public static void main(String[] args)
        {
                double alturaZe = 1.1, alturaAna = 1.5;
                double crescimentoAnoZe = 0.3, crescimentoAnoAna = 0.2;
                int anos = 0;

                while (alturaZe < alturaAna) {
                        anos++;
                        alturaZe += crescimentoAnoZe;
                        alturaAna += crescimentoAnoAna;
                }

                System.out.println("Em " + anos + " anos, Ze vai ser maior.");
        }
}
A

Valeu a todos que postaram,Obrigado!!!

Criado 26 de outubro de 2008
Ultima resposta 26 de out. de 2008
Respostas 11
Participantes 5