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

задача 6Д из учебника Меньшикова,не вижу ошибку

27.08.2015, 03:41. Показов 689. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Good day,folks! Столкнулся с проблемой в решении задачи 6Д из учебника Меньшикова,текст задачи:

Дано N прямоугольников со сторонами, параллельными осям координат. Требуется
определить площадь фигуры, образованной объединением данных прямоугольников.
Входной файл - N строк, содержащих по 4 числа: x1,y1, x2, y2 - координаты двух противоположных углов прямоугольника.
Вроде бы учитываю пересечения, алгоритм взял из учебника Окулова, но в итоге все-равно получаю неверный ответ, если входные данные содержат пересекающиеся прямоуголники.Может кто увидит, где ошибка? 3аранее очень благодарен!

Main code:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
public class MainClass {
    private static List<Integer> xArray = new ArrayList(); // ArrayList contains X-coordinates
    private static List<Integer> yArray = new ArrayList(); // ArrayList contains Y-coordinates
    private static List<Rectangle> recs = new ArrayList(); // ArrayList contains all rectangles
    
    /*Input method,reads a string from the file and seperates it in lines
    initial string: 1 1 1 1\r\n2 2 2 2 , result string example[0] = "1 1 1 1" and etc */ 
    public static void input() throws IOException {
        String inputContent = readTextFile("input.txt");
        String[] contentLines = inputContent.split("\r\n");
        for (int i = 0; i < contentLines.length; i++) {
            Rectangle rec = new Rectangle();
            rec.input(contentLines[i]);
            recs.add(rec);
        }
    }
    /* Method calculates intersection of rectangles and sum the AreaSize */ 
    public static void solve() throws IOException {
        int totalAreaSize = 0;
        int addend = 0;
        Rectangle currentRec = new Rectangle();
        for (int i = 0; i < xArray.size() - 1; i++) {
            for (int j = 0; j < yArray.size() - 1; j++) {
                currentRec.init(xArray.get(i), yArray.get(j), xArray.get(i + 1), yArray.get(j + 1));
                for (Rectangle recElem : recs) {
                    if (recElem.isParentFor(currentRec)) {
                        addend = currentRec.square();    
                        totalAreaSize = totalAreaSize+addend;
                        break;
                    }
                }
            }
 
        }
        System.out.println(totalAreaSize);
        FilesUtil.writeToTextFile("output.txt", Integer.toString(totalAreaSize));
    }
    /*Rectangle object*/
    private static class Rectangle {
 
        private int x0, y0; // left top corner
        private int x1, y1; // right top corner
        /* Parsing string massive, adding coordinates to ArrayList */
        public void input(String coordinateLine) {
            int _x0, _y0, _x1, _y1, temp;
            String[] coordinates = coordinateLine.split(" ");
            _x0 = Integer.parseInt(coordinates[0]);
            _x1 = Integer.parseInt(coordinates[2]);
            _y0 = Integer.parseInt(coordinates[1]);
            _y1 = Integer.parseInt(coordinates[3]);
            if (_x0 > _x1) {
                temp = _x0;
                _x0 = _x1;
                _x1 = temp;
            }
            if (_y0 > _y1) {
                temp = _y0;
                _y0 = _y1;
                _y1 = temp;
            }
           
            init(_x0, _y0, _x1, _y1);
            xArray.add(_x0);
            xArray.add(_x1);
            yArray.add(_y0);
            yArray.add(_y1);
 
        }
 
        public void init(int _x0, int _y0, int _x1, int _y1) {
            x0 = _x0;
            y0 = _y0;
            x1 = _x1;
            y1 = _y1;
           
        }
        /*Method checks if rectangle inside another rectangle*/
        public boolean isInside(int left, int value, int right) {
            return left <= value && value <= right;
        }
        
        public boolean isParentFor(Rectangle rec) {
            return isInside(x0, rec.x0, x1)
                    && isInside(x0, rec.x1, x1)
                    && isInside(y0, rec.y0, y1)
                    && isInside(y0, rec.y1, y1);
        }
        
        public int square() {
            return (x1 - x0) * (y1 - y0);
        }
    }
 
    public static void main(String[] args) throws IOException {
        input();
        solve();
    }
}
UtilClass:
Java
1
2
3
4
5
6
7
8
9
10
11
public class FilesUtil {
 
    public static String readTextFile(String fileName) throws IOException {
        String content = new String(Files.readAllBytes(Paths.get(fileName)));
        return content;
    }
 
    public static void writeToTextFile(String fileName, String content) throws IOException {
        Files.write(Paths.get(fileName), content.getBytes(), StandardOpenOption.CREATE);
    }    
}
Добавлено через 21 час 2 минуты
Reshil, vsem spasiboTemu mozhno zakritb
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.08.2015, 03:41
Ответы с готовыми решениями:

Не вижу ошибку
Код вроде верный, выводит и имя через сессию и права доступа... А вот данные со сводной таблице не выводит... С начало сделал запрос к...

Не вижу ошибку
#include&lt;iostream&gt; #include&lt;math.h&gt; #include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; int logarifm1(double *p1,...

Не вижу ошибку
Что-то не могу увидеть ошибку.Во втором массиве выдает только 1 элемент и все.Весь вечер сижу за компьютером и не могу увидеть в...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.08.2015, 03:41
Помогаю со студенческими работами здесь

Не вижу ошибку
Было дано задание. В одной из тем помогли с решением. Преподавателю не понравилось - сказал переписывать. Вот вроде код подправил. Но сижу...

Не вижу ошибку
Здравствуйте! Не вижу в чём ошибка (выдает на 12 строчке). Так же возникла проблема с выравниванием по правому краю (нашел 2 варианта...

Не вижу свою ошибку
заходим в программу, выпригивает окно авторизации, оно отлавливает имя пользователя и пароль..пароль совпадает с номером зачётки...

Пример с учебника выдаёт ошибку
Здравствуйте . Я начал учить &quot;внешние процедуры&quot; . Взял компилировать просто пример с учебника , чтобы разобраться , а он выдаёт ошибки : ...

Не вижу ошибку но она есть
вродебы код исполнен правильно, но выдает ошибку... и не могу понять почему... ошибка появилась в програме когда я в одном окне поставил...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru