Exercícios Big Java! Preciso de ajuda!

8 respostas
edpittol

Olá pessoal!
Sou novo em Java e tenho em base ao meu estudo o Big java do Cay Horstmann. Estou realizando seu exercícios de programação, porém alguns deles não estou conseguindo resolver. Então peço a ajuda de vocês para que possam ajudar a resolver esses exercícios. Se não conseguem resolver pelo menos de dicas de como fazer.

Bom, vou pôr alguns agora e com o tempo vou acrescentando mais. Obrigado!

P5.5 - Escreva um programa que desenhe um círculo com raio 100 e centro (110, 120). Peça que o usuário especifique as coordenadas x e y de um ponto. Se o ponto estiver dentro do círculo exiba a mensagem "Parabéns". Caso contrário, exiba a mensagem "Você perdeu". No seu exercício, defina uma classe Circulo e um méto boolean isInside(Point2D.Double p).

O que já fiz:

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Color;
import java.awt.Font;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import javax.swing.JOptionPane;

public class Circulo extends Applet
{
    private double x;
    private double y;

    public Circulo()
    {
        String input = JOptionPane.showInputDialog("x:");
        x = Integer.parseInt(input);
        
        input = JOptionPane.showInputDialog("y:");
        y = Integer.parseInt(input);
    }
    
    public void paint(Graphics g)
    {
        Graphics2D g2 = (Graphics2D)g;

        Point2D.Double p = new Point2D.Double(x,y);

        //desenha círculo
        Ellipse2D.Double circulo = new Ellipse2D.Double(10, 10, 100, 100);
        g2.draw(circulo);

        //desenha ponto
        Ellipse2D.Double ponto = new Ellipse2D.Double(x - 1, y - 1, 2, 2);
        g2.draw(ponto);

        //desenha mensagem
        Font font = new Font("Monospaced", Font.PLAIN, 12);
        String message = "";

        if(isInside(p))
        {
            message = "Parabéns";
            g2.drawString(message, 10, 130);
        }
        else
        {
            message = "Você perdeu";
            g2.drawString(message, 10, 130);
        }
    }
    
    public boolean isInside(Point2D.Double p) { ... }
}
Não sei como faze o método isInside. Devo usar uma fómula matemática para saber se está dentro ou fora? Me ajudem, por favor.
P6.3 - Vôo de um projetil. Suponha que uma bala de canão seja projetada verticalmente no ar a uma velocidade inicial v0. Qualquer livro de matemática informará que a posição da bala depois de t segundos é s(t) = -0,5 x g x t x t x v0 x t. onde g = 9,81 m/(s * s), a força da gravidade da Terra. Nenhum livro de matemática menciona por que alguém iria querer realizar essa experiência obviamente perigosa; assim, nós a realizaremos na segurança do computador. Na verdade, vamos confirmar o teorema através de cálculos com uma simulação. Na nossa simulação, vamos considerar a maneira como a bala se move em intervalos muito curtos de tempo deltaT. Em um intervalo curto de tempo, a velocidade v é quase constante, e podemos calcular a distância que a bala se move como deltaS = v x deltaT. No nosso programa, simplesmente vamos configurar
double deltaT = 0.01;
e atualizar a posição por
s = s + v * deltaT;
A velocidade muda constantemente - na verdade, ela reduz com a força gravitacional da terra. Em um intervalo curto de tempo, v diminui de cordo com g x deltaT e devemos manter a velocidade atualizada como
v = v - g * deltaT;
Na próxima iteração, usa-se a nova velocidade para atualizar a distância. Agora execute a simulação até que a bala caia de volta na terra. Obtenha a velocidade inicial como uma entrada(100 m/s é um bom valor). Atualize a posição e a velocidade 100 vezes por segundo, mas imprima a posição somente a cada segundo completo. Utilize uma classe BalaDeCanhao.

O que já fiz:

import java.text.NumberFormat;

public class BalaDeCanhao
{
    private double v;
    private double deltaT;
    private double g;
    private double s;
    
    public BalaDeCanhao()
    {
        v = 100;
        deltaT = 0.01;
        g = 9.81;
        s = 0;
    }
    
    public void calculaPosicao()
    {
        NumberFormat formatter = NumberFormat.getNumberInstance();
        formatter.setMaximumFractionDigits(2);
        boolean done = false;
        while(!done)
        {
            s += v * deltaT;
            v += -g * deltaT;
            deltaT += 0.01;
            if(deltaT % 1 == 0)
                System.out.println("Posição: " + s + "Velocidade: " + v);
            if(s <= 0)
                done = true;
            deltaT = Double.parseDouble(formatter.format(deltaT));
        }
    }
}
Estou com problema no
deltaT = Double.parseDouble(formatter.format(deltaT));
Alguém sabe me dizer o que há de errado com isso?

8 Respostas

T

Poste o que você já tentou fazer também, e as suas dúvidas, senão parece aquele fulano que tem lição de casa para resolver, cola o enunciado , o ID do MSN, e fica “no aguardo”.
OK?

edpittol

thingol… não é lição de casa. Não se preocupe. No segundo coloquei o que já fiz. Porém no primeiro não tenho nem idéia como começar. Meu ID do MSN é [email removido]. Se poder me ajudar fico grato.

Marky.Vasconcelos

2:) Olha oque o segundo exercicio pede,
pra voce transforma em centavos

9.73 são quantos centavos? R:973
se voce diminuir 1 real(100 centavos) fica quanto 873 centavos oque significa que voce já tem uma moeda de um real devendo agora é só seguir a mesma lógica

Você tambem não queria resolvido não é?

edpittol

Valeu pela ajuda Mark_Ameba. Depois vou tentar resolver ele. Grato.

Marky.Vasconcelos

Por nada por isso tamo no fórum

francislon

Se eu quisesse converter 2.5 metros em cm como eu faria? Uma simples regras de três:

se 1 metro vale 100 centimetro
2.5 metros vai valer X

Ai é só eu calcular X.
A lógica dos calculos é parecido com essa.
Como ele pede pra converter vc vai fazer sua regra de tres lá e chegar numa fórmula, ou seja pra cada conversão vc vai ter uma fórmula. Aí é só aplicar os valores das variaveis na formula.

Deu pra entender :shock: , ou não é isso que você quer saber?

edpittol

Exercícios P3.7 e P3.11. Obrigado pelas ajudas. Espero que continuem ajudando.

Adicionando P5.5.

edpittol

Adicionado P6.3

Criado 11 de junho de 2007
Ultima resposta 14 de jun. de 2007
Respostas 8
Participantes 4