Как создать счётчик,, в List при котором код будет считываться первые шесть элементов, далее останавливаться и продолжать считывать оставшиеся 6?
Я вывожу площадь треугольника по трем его вершинам: 2 1 -6 -3 1 5, как сделать, чтобы можно было выводить множество площадей: 2 1 -6 -3 1 5 1 1 4 4 5 1 2 3 4 1 2 5 1 2 3 с разными вершинами непрерывно.Читаются элементы из файла.
while(true){
for (int i = 0; i < arrList.get(i); i++) {
int x1 = arrList.get(0);
int y1 = arrList.get(1);
int x2 = arrList.get(2);
int y2 = arrList.get(3);
int x3 = arrList.get(4);
int y3 = arrList.get(5);
// double a = Math.sqrt((arrList.set(i,x1) - arrList.set(i,x2))* (arrList.set(i,x1) - arrList.set(i,x2)) +
// (arrList.set(i,y1) - arrList.set(i,y2)) * (arrList.set(i,y1) - arrList.set(i,y2)));
// double b = Math.sqrt((arrList.set(i,x1) - arrList.set(i,x3))* (arrList.set(i,x1) - arrList.set(i,x3)) +
// (arrList.set(i,y1) - arrList.set(i,y3)) * (arrList.set(i,y1) - arrList.set(i,y3)));
// double c = Math.sqrt((arrList.set(i,x2) - arrList.set(i,x3))* (arrList.set(i,x2) - arrList.set(i,x3)) +
// (arrList.set(i,y2) - arrList.set(i,y3)) * (arrList.set(i,y2) - arrList.set(i,y3)));
double a = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
double b = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2));
double c = Math.sqrt((x3 - x1) * (x3 - x1) + (y3 - y1) * (y3 - y1));
// if (a + b <= c || a + c <= b || a + c <= b)
// System.out.println("Треугольник не существует");
// else {
double p = ((a + b + c) / 2);
double square = Math.sqrt(p * (p - a) * (p - c) * (p - b));
System.out.println("Площадь треугольника: " + square);
}
break;
}
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Для этого следует изменить шаг в цикле for, а также исправить сравнение, так как arrList.get(i) возвращает координату, которая может оказаться отрицательной.
for (int i = 0, n = arrList.size(); i < n; i += 6) {
int x1 = arrList.get(i);
int y1 = arrList.get(i + 1);
int x2 = arrList.get(i + 2);
int y2 = arrList.get(i + 3);
int x3 = arrList.get(i + 4);
int y3 = arrList.get(i + 5);
double a = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
double b = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2));
double c = Math.sqrt((x3 - x1) * (x3 - x1) + (y3 - y1) * (y3 - y1));
if (a + b <= c || a + c <= b || a + c <= b)
System.out.println("Треугольник не существует");
else {
double p = ((a + b + c) / 2);
double square = Math.sqrt(p * (p - a) * (p - c) * (p - b));
System.out.println("Площадь треугольника: " + square);
}
}