Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/47: Рейтинг темы: голосов - 47, средняя оценка - 4.77
1 / 1 / 0
Регистрация: 23.10.2012
Сообщений: 25

Приложение, вычисляющее периметр и площадь разных фигур

22.01.2017, 18:30. Показов 9718. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть ли на форуме примеры подобных заданий? Поиск по сайту не дал результатов. Кто сможет помочь с выполнением?
Требуется написать приложение, которое выполняет следующие функции:
1. считывает из файла информацию (длины сторон, углы при необходимости) о фигурах (треугольник, прямоугольник, окружность, параллелограмм)
2. программа вычисляет периметр и площадь фигур
3. программа логирует свои действия на каждом шаге в отдельный файл
4. программа сортирует указанные фигуры по периметру или площади разными алгоритмами сортировки: пузырьком, сортировка выбором, быстрая сортировка (выбор критерия сортировки и алгоритм сортировки может быть задан параметром программе или случайным образом)
5. программа выводит в консоль отсортированные по возрастанию фигуры

Используемые технологии:
1. ООП
2. Ввод/вывод в java
3. Паттерны: Стратегия
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.01.2017, 18:30
Ответы с готовыми решениями:

Расчёт геометрических параметров фигур: площадь и периметр
День добрый всем, и заранее спасибо за поддержку и помощь) Возник вопрос: есть задание - расчёт геометрических параметров фигур (...

Найти периметр и площадь фигур через перегрузку функции
Полный текст программы: Написать программу для нахождения периметра и площади прямоугольника, квадрата, треугольника и трапеции через...

Вычислить площадь и периметр всех фигур (кроме круга)
Добрый день. Помогите пожалуйста с задачей: Вводятся радиус круга, 3 стороны треугольника, 4 стороны квадрата. Необходимо вычислить площадь...

2
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
12.01.2018, 12:17
Лучший ответ Сообщение было отмечено Goldy Vnukova как решение

Решение

Не сделаны файлы и разные типы сортировки.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public abstract class Figure {
    protected double area;
    protected double perimeter;
 
    public double getArea() {
        return area;
    }
 
    public double getPerimeter() {
        return perimeter;
    }
 
    protected abstract void recalculateProperties();
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public final class Circle extends Figure {
    private double r;
 
    public Circle(double r) {
        this.r = r;
        recalculateProperties();
    }
 
    public double getR() {
        return r;
    }
 
    public void setR(double r) {
        this.r = r;
        recalculateProperties();
    }
 
    @Override
    protected void recalculateProperties() {
        area = Math.PI * r * r;
        perimeter = 2.0 * Math.PI * r;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public final class Parallelogram extends Figure{
    private double a;
    private double b;
    private double alpha;
 
    public Parallelogram(double a, double b, double alpha) {
        this.a = a;
        this.b = b;
        this.alpha = alpha;
        recalculateProperties();
    }
 
    public double getA() {
        return a;
    }
 
    public void setA(double a) {
        this.a = a;
        recalculateProperties();
    }
 
    public double getB() {
        return b;
    }
 
    public void setB(double b) {
        this.b = b;
        recalculateProperties();
    }
 
    public double getAlpha() {
        return alpha;
    }
 
    public void setAlpha(double alpha) {
        this.alpha = alpha;
        recalculateProperties();
    }
 
    @Override
    protected void recalculateProperties() {
        perimeter = 2.0 * (a + b);
        area = a * b * Math.sin(alpha);
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public final class Rectangle extends Figure {
    private double a;
    private double b;
 
    public Rectangle(double a, double b) {
        this.a = a;
        this.b = b;
        recalculateProperties();
    }
 
    public double getA() {
        return a;
    }
 
    public void setA(double a) {
        this.a = a;
        recalculateProperties();
    }
 
    public double getB() {
        return b;
    }
 
    public void setB(double b) {
        this.b = b;
        recalculateProperties();
    }
 
    @Override
    protected void recalculateProperties() {
        area = a * b;
        perimeter = 2.0 * (a + b);
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public final class Square extends Figure {
    private double a;
 
    public Square(final double a) {
        this.a = a;
        recalculateProperties();
    }
 
    @Override
    protected void recalculateProperties() {
        area = a * a;
        perimeter = 4 * a;
    }
 
    public double getA() {
        return a;
    }
 
    public void setA(double a) {
        this.a = a;
        recalculateProperties();
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public final class Triangle extends Figure{
    private double a;
    private double b;
    private double c;
 
    public Triangle(double a, double b, double c) {
        this.a = a;
        this.b = b;
        this.c = c;
        recalculateProperties();
    }
 
    @Override
    protected void recalculateProperties() {
        perimeter = a + b + c;
 
        final double p = perimeter / 2.0;
        area = Math.sqrt(p * (p - a) * (p - b) * (p - c));
    }
 
    public double getA() {
        return a;
    }
 
    public void setA(double a) {
        this.a = a;
        recalculateProperties();
    }
 
    public double getB() {
        return b;
    }
 
    public void setB(double b) {
        this.b = b;
        recalculateProperties();
    }
 
    public double getC() {
        return c;
    }
 
    public void setC(double c) {
        this.c = c;
        recalculateProperties();
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class FigureOperator {
    private static final Comparator<Figure> BY_AREA = Comparator.comparingDouble(Figure::getArea);
    private static final Comparator<Figure> BY_PERIMETER = Comparator.comparingDouble(Figure::getPerimeter);
 
    private List<Figure> figureList;
 
    public enum SortPropertyType {
        AREA(BY_AREA), PERIMETER(BY_PERIMETER);
 
        private final Comparator<Figure> correspondingComparator;
 
        SortPropertyType(final Comparator<Figure> correspondingComparator) {
            this.correspondingComparator = correspondingComparator;
        }
 
        public Comparator<Figure> getCorrespondingComparator() {
            return correspondingComparator;
        }
    }
 
    public FigureOperator() {
        this.figureList = new ArrayList<>();
    }
 
    public void addFigure(final Figure figure) {
        figureList.add(figure);
    }
 
    public void sortFigures(final SortPropertyType type) {
        figureList.sort(type.getCorrespondingComparator());
    }
 
    @Override
    public String toString() {
        StringJoiner stringJoiner = new StringJoiner("\n");
        for (final Figure figure : figureList) {
            stringJoiner.add("Figure : " + figure.getClass() + ", S = " + figure.getArea() + ", p = " + figure.getPerimeter());
        }
        return stringJoiner.toString();
    }
 
    private double getArea(final Figure figure) {
        return figure.getArea();
    }
 
    private double getPerimeter(final Figure figure) {
        return figure.getPerimeter();
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Main {
    public static void main(String[] args) {
        final FigureOperator operator = new FigureOperator();
 
        operator.addFigure(new Circle(12.0));
        operator.addFigure(new Rectangle(2.0, 4.0));
        operator.addFigure(new Square(5.0));
        operator.addFigure(new Triangle(3.0, 4.0, 5.0));
        operator.addFigure(new Parallelogram(2.0, 3.0, 133.0));
 
        System.out.println("Before sort:\n" + operator);
        operator.sortFigures(FigureOperator.SortPropertyType.AREA);
        System.out.println("After sort:\n" + operator);
    }
}
0
15 / 15 / 1
Регистрация: 15.01.2018
Сообщений: 42
15.01.2018, 13:16
Какие именно фигуры? Замкнутая кривая первого порядка, или что?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2018, 13:16
Помогаю со студенческими работами здесь

Вычислить площадь и периметр квадрата со стороной а,площадь и периметр прямоугольника со сторонами b и с
вычислить площадь и периметр квадрата со стороной а, площадь и периметр прямоугольника со сторонами b и с, площадь круга и длину окружности...

Вычислить по вводимым данным площадь фигур разных видов - треугольник, прямоугольник, окружность
Написать программу вычисляющую по вводимым данным площадь фигур разных видов (треугольник, прямоугольник, окружность). Использовать записи...

Разработать приложение, которое по заданным катетам прямоугольного треугольника вычисляет периметр и площадь треугольник
Разработать приложение, которое по заданным катетам прямоугольного треугольника вычисляет периметр и площадь треугольник а) Создать...

Создайте приложение для расчета различных геометрических фигур. Получите уведомление о том, что площадь формы рассчитана
Создайте приложение для расчета различных геометрических фигур. Получите уведомление о том, что площадь формы рассчитана. (извините за...

Создайте приложение для расчета различных геометрических фигур. Получить уведомление о том, что площадь формы рассчитана
Создайте приложение для расчета различных геометрических фигур. Получите уведомление о том, что площадь формы рассчитана.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru