Array de pontos2D

5 respostas
java
mxmeida

Olá pessoal!
O enunciado da questão é:
Construa um programa que permita guardar pontos 2D num array e calcular a distância total entre o primeiro e o último ponto (passando por todos).

O que eu já fiz é:

public class Ponto2D {

private float x;

private float y;
public float getX() {
    return x;
}
public float getY() {
    return y;
}

}


import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    Ponto2D[] p=new Ponto2D[5];
    Scanner input=new Scanner(System.in);
    for(int i=0;i<p.length;i++){
        System.out.println("Digite a coordenada x do ponto p: ");
        float x=input.nextFloat();
        System.out.println("Digite a coordenada y do ponto p: ");
        float y=input.nextFloat();
    }
    float ix,iy,fx,fy;
    for(int i=0;i<p.length;i++){
       if(i==0) {
          ix= p[i].getX();
          iy =p[i].getY();
       }
       if(i==p.length){
           fx= p[i].getX();
           fy= p[i].getY();
       }
    }

    float distancia=  Math.sqrt(Math.pow(fx-ix, 2) + Math.pow(fy-iy, 2));
    System.out.println(distancia);
}

}
A linha do cálculo da distância dá erro e eu não sei como corrigir.O objetivo é calcular a distância entre o primeiro e ultimo ponto do array, e eu ainda não percebo muito bem como é o funcionamento do getter e do setter em java.
Obrigada, desde já e um abraço de Portugal.

5 Respostas

TerraSkilll

Qual erro que dá?

Abraço.

staroski
public class Ponto2D {

    private float x;
    private float y;

    public Ponto2D(float x, float y) {
        this.x = x;
        this.y = y;
    }

    public float getX() {
        return x;
    }

    public float getY() {
        return y;
    }

    public float getDistancia(Ponto2D p) {
        return (float) Math.sqrt(Math.pow(p.getX() - this.getX(), 2) + Math.pow(p.getY() - this.getY(), 2));
    }
}



import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Ponto2D[] p = new Ponto2D[5];
        Scanner input = new Scanner(System.in);
        for (int i = 0; i < p.length; i++) {
            System.out.println("Digite a coordenada x do ponto p: ");
            float x = input.nextFloat();
            System.out.println("Digite a coordenada y do ponto p: ");
            float y = input.nextFloat();
            p[i] = new Ponto2D(x, y);
        }
        float distanciaTotal = 0;
        Ponto2D inicio = p[0];
        for (int i = 1; i < p.length; i++) {
            Ponto2D fim = p[i];
            distanciaTotal += inicio.getDistancia(fim);
            inicio = fim;
        }
        System.out.println(distanciaTotal);
    }
}
mxmeida

Acho que o cálculo da distância entre os dois pontos não dá o valor correto, não sei onde o programa vai buscar o valor final

staroski

O método abaixo retorna a ditância entre o ponto atual e o ponto passado por parâmetro

public float getDistancia(Ponto2D p) {
        return (float) Math.sqrt(Math.pow(p.getX() - this.getX(), 2) + Math.pow(p.getY() - this.getY(), 2));
    }
float distanciaTotal = 0;
        Ponto2D inicio = p[0];
        for (int i = 1; i < p.length; i++) {
            Ponto2D fim = p[i];
            distanciaTotal += inicio.getDistancia(fim);
            inicio = fim;
        }
        System.out.println(distanciaTotal);
mxmeida

Obrigada, já percebi de onde vem o resultado! O programa funciona corretamente

Criado 18 de março de 2019
Ultima resposta 18 de mar. de 2019
Respostas 5
Participantes 3