Algorytm na obliczenie pola dowolnego wielokata

0

Witam,
mam do napisania program na obliczenie pola powierzchni ze współrzędnych dowolnego wielokąta.
Zamysł miałam taki, że najpierw trzeba wprowadzić liczbę wierzchołków, a następnie odpowiadające im współrzędne.
Moje pytanie brzmi : jak zadeklarować współrzędne dla wcześniej wymyślonej liczby wierzchołków? Do tej pory udało mi się napisać coś takiego:

//

Import java.util.Scanner;
 
public class Pole {
public static void main (String args[]){
 
Scanner wspolrzedne=new Scanner (System.in);
 
System.out.println("Podaj ilość wierzcholkow");
int n=wspolrzedne.nextInt();
if (n<=2) {
System.out.println("To nie jest wielokat");
}
else
System.out.println("Podaj współrzędne wielokata - najpierw X pkt a potem Y");{
for (int i=0; i<n; i++){
double x=wspolrzedne.nextDouble();
double y=wspolrzedne.nextDouble();
}

//
Czy ta forma jest akceptowalna?
Ponadto jak teraz odnieść te współrzędne do wzorów na obliczenie pola?

Przykładowy wzór to : 2P = Suma[(Yi+1 -Yi-1 )*Xi

Czy mógłby mi ktoś coś doradzić?

Środowisko Eclipse.
//Jestem początkująca, więc proszę o wyrozumiałość.

Pozdrawiam.
}
}

2

Zapamiętaj współrzędne w tablicy.

int n=wspolrzedne.nextInt();
double[][] wsp = new double[n][2];
if (n<=2) {
System.out.println("To nie jest wielokat");
System.exit(0);
}
else
System.out.println("Podaj współrzędne wielokata - najpierw X pkt a potem Y");{
for (int i=0; i<n; i++){
wsp[i][0] = wspolrzedne.nextDouble();
wsp[i][1] = wspolrzedne.nextDouble();
}
0

Ok, dzięki wielkie, ale jak odnieść tę tablice do wzoru, który wyżej podałam? Mam na myśli : jak teraz zapisać postać wzoru 2P = Suma[(Yi+1 -Yi-1 )*Xi ] w ten sposób, żeby program brał współrzędne np. dla trójkąta:
Y punktu 3 i punktu 1 oraz współrzędną X punktu 2, następnie współrzędna Ypunktu 2 i 1 oraz X3 a potem Y2 i Y3 oraz X1 ?

1
for (int k=1;k<=n;++k)
{
  int i=k%n;
  int im=k-1; // i-1
  int ip=(k+1)%n; // i+1

}
0

Dziękuje , ale nie bardzo rozumiem ten zapis.
Co oznacza %N?
Przy próbie wpisania współrzędnych wyskakuje błąd "java.lang.ArithmeticException" w linijce dotyczącej int i=k%N, co to może oznaczać?
I czy teraz te zmienne i, ip i im mam podstawić do wzoru na pole?
Dodam jeszcze, że sumę tę trzeba podzielić na 2 (bo wcześniej podałam wzór na podwojone pole).

0

Zmień kierunek, do informatyki nie nadajesz się absolutnie.

double suma=0;
for (int k=1;k<=n;++k) suma+=wsp[k%n][0]*(wsp[k-1][1]-wsp[(k+1)%n][1]);
System.out.println(Math.abs(suma)/2);

1 użytkowników online, w tym zalogowanych: 0, gości: 1