Професионална програма
Loading...
+ Нов въпрос
sevdalin avatar sevdalin 38 Точки

Basic OOP - Problem 12. Rectang leIntersection

Здравейте,

условието на задачата е:

Create a class Rectangle. It should consist of an ID, width, height and the coordinates of its top left corner (horizontal and vertical). Create a method which receives as a parameter another Rectangle, checks if the two rectangles intersect and returns true or false. 
On the first line you will receive the number of rectangles – N and the number of intersection checks – M. On the next N lines, you will get the rectangles with their ID, width, height and coordinates. On the last M lines, you will get pairs of IDs which represent rectangles. Print if each of the pairs intersect.
You will always receive valid data. There is no need to check if a rectangle exists.

Примерен тест, който връща True

2 1
Pesho 2 2 0 0
Gosho 2 2 0 0
Pesho Gosho

Решил съм задачата, като съм използвал вградения клас Rectangle, който има методи за проверка на 2 rectangle-а, дали са Interesect или не. Но Judge ми дава 60/100. Последен тест Runtime Exception и предпоследен за грешен отговор. Не мога да си открия грешката. Някой може ли да погледне и да ме насочи?

Тук е кодът ми и съм сложил доста обяснения за да се разбира по-лесно, кое какво прави и защо го ползвам:

Код --> Виж

Надявам се някой да може да каже къде греша, че аз не успявам да видя!

Благодаря :)

Тагове:
1
C# OOP Basics
TanyaZheleva avatar TanyaZheleva 354 Точки

Ползвай double. Последният тест и на мен ми гърмеше, поне докато не смених int-a.

1
01/06/2017 23:47:05
sevdalin avatar sevdalin 38 Точки

Да, само че класа който ползвам няма overload за double values...

0
Sim0o0na avatar Sim0o0na Trainer 567 Точки

Ами не ползвай държавния клас. Целта на задачата е да си направиш ти :)

0
NikolayPopov avatar NikolayPopov 253 Точки

Не мисля че идеята е да ползваме готови работи. Едно решение без такива е да си направиш четирите ъгъла за всеки. Тогава просто проверяваш дали някой от четириъгълниците има един ъгъл който е в другия и няма как да изпуснеш пресечка. Трябва да провериш и в двете посоки обаче, щото единия може да е напълно в другия или подобни ситуации.

0
sevdalin avatar sevdalin 38 Точки

Причината поради която се опитах да избегна създаването на мой си клас, е не защото ме мързи да си го направя, а защото съм слаб по математика и нямам идея как да проверя дали са един в друг или се застъпват и т.н. Съответно ще изгубя 3х повече време за да търся как се решава математически задачата. Просто исках да си спестя математиката, защото не уча математика, а програмиране. Вярно, че до някъде едното има нещо общо с другото, но в конкретният случай условието на задачата е такова, само защото да се измисли някаква по-интересна задача за упражнение на текущият материал, а не да се учим на математика.

0
NikolayPopov avatar NikolayPopov 253 Точки

Разбирам, но не мисля че това е баш математика, може да се разбие на логически стъпки и единстваната математика е сравняване на числа, без което не може. 

1