[Logo] Mendo Judge Discussion Board - Forums
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
Триаголници  XML
Forum Index » Задачи од национални натпревари
Author Message
vavio



Joined: 25/02/2010 14:40:01
Messages: 25
Offline

Задачата ми е решена, но ми поминува само на првите четири случаеви. 5тиот тест случај го симнав и го пробав рачно и даде точен одговор, но не ми поминува на страницата
MOI



Joined: 07/07/2010 16:31:48
Messages: 447
Offline

vavio wrote:Задачата ми е решена, но ми поминува само на првите четири случаеви. 5тиот тест случај го симнав и го пробав рачно и даде точен одговор, но не ми поминува на страницата

      1. Прочитај ја темава - http://mendo.mk/jforum/posts/list/76.page
      2. Прочитај дека pow враќа (и прима) резултат реален број - http://www.cplusplus.com/reference/clibrary/cmath/pow/
      3. Или декларирај ja t како матрица од цели броеви и промени ги сите појавувања на pow(x,2) во x*x, или пак додади некоја мала вредност пред претворањето на реален број во цел
                  k1=pow(t[i][1]-t[j][1],2)+pow(t[i][2]-t[j][2],2)+0.00001; //od tvojot kod

Off-topic: За да може да ти помогнат и другите корисници на системот, кога ќе отвараш ваква тема друг пат, прикачи го и изворниот код на твоето решение.

This message was edited 3 times. Last update was at 15/08/2011 22:00:38

vavio



Joined: 25/02/2010 14:40:01
Messages: 25
Offline

Добро еве да земиме дека грешката се јавува тука, но како е можно локално да ми дава точен излез, а на страната на истиот пример да вели дека има грешен излез?
MOI



Joined: 07/07/2010 16:31:48
Messages: 447
Offline

vavio wrote:Добро еве да земиме дека грешката се јавува тука, но како е можно локално да ми дава точен излез, а на страната на истиот пример да вели дека има грешен излез?

Можеш ли да провериш дали навистина програмата дава точен резултат локално, бидејќи кај мене не печати тоа што треба (проверив на Мендо и на сите компјутери дома)?

Инаку, многу е тешко да се одговори зошто програмата дава точни резултати на еден компјутер, а на друг не - особено без повеќе информации. Може да биде поради тоа што користиш друг компајлер (различен од gcc), друга архитектура (на пример, имаш 64-битен процесор), различна наредба за компајлирање (оптимизации, ...), итн.

Ако навистина те интересира оваа тема, повеќе информации можеш да најдеш тука: http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html. Јас се обидов (во темата до која поставив линк) да наведам тоа што јас мислам дека е потребно да се знае, но постојат толку многу страници на Интернет и толку многу луѓе кои што ги прават овие грешки (јас мислам дека има едно 1000 теми на TopCoder поврзани со ова, и скоро после секој втор натпревар се отвара нова тема), да е навистина тешко да се даде едноставен одговор.

This message was edited 1 time. Last update was at 15/08/2011 00:19:56

vavio



Joined: 25/02/2010 14:40:01
Messages: 25
Offline

како програма која ја користам за компајлирање е CodeBlocks која исто така ја препорачувате вие и ја користите на натпревари. За 64 битен процесор немам, така да и тоа не е
Моментално не сум дома па кога ќе стасам ќе проверам на 3 различни случаеви што ми дава грешка
5тиот, 6тиот и 10тиот
MOI



Joined: 07/07/2010 16:31:48
Messages: 447
Offline

Океј е, го извршив твојот код на ideone.com и, барем на 5-тиот тест пример (на тој тестирав), дава точен резултат така што верувам дека и кај тебе го печати истото.

Сепак, самиот факт што на неколку компјутери се добива различен резултат, и тоа што на овој форум и на многу други поврзани со натпревари по информатика има слични теми, е доволен доказ дека не треба на тој начин да претвораш реален број во цел. Едноставно, ако ги прочиташ информациите дадени на линковите што ги споменав во овие две теми, ќе видиш дека не треба многу да веруваш на операциите со реални броеви - а особено не на функции како pow (не можам да најдам таква информација за C++, но во документацијата на Јава јасно пишува дека методот не ја враќа секогаш точната вредност - дадена е и прецизноста која треба да се очекува).
vavio



Joined: 25/02/2010 14:40:01
Messages: 25
Offline

5тиот и 6тиот пример поминаа со точни излези. Останатите че ги допроверам.
Твоја сугестија е да ги претворам сите int во double или float и да пробам повторно со решението?
Моментално имам некоја идеја за поинаку да ја поставам задачата, па че видам што че излези

ИЗМЕНА:

И 7миот пример помина

ИЗМЕНА 2:

И 8миот пример помина

П.С
9тиот пример го немам, а 10тиот че го проверам друг пат(ме заболеа очите од внесување бројки )

This message was edited 2 times. Last update was at 15/08/2011 21:01:59

obi1kenobi



Joined: 18/02/2010 20:01:33
Messages: 168
Offline

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/video-lectures/lecture-5/

@vavio: Ако баш те интересира зошто дава различен резултат, изгледај го ова предавање од МИТ, мислам дека тешко ќе најдеш поедноставно и појасно а точно објаснување.

Иначе тоа што MOI го кажува е сосема точно и немој да мислиш дека компјутерите на МЕНДО се здружиле против тебе или некој тоа го прави за инает. Едноставно floating-point броевите се дизајнирани да бидат точни *до одредена прецизност*. Пробај подели 1 со 5 во double да видиш дека нема да добиеш 0.2 туку нешто слично на 0.2000000000000000002. Кога веќе немаш точни туку приближно точни вредности, многу е битен редот на операции - 1/5*5 во овој случај нема да даде ист резултат како 1*5/5. А компајлерот и линкерот имаат комплетна дискреција по прашањето на оптимизација и преуредување на кодот, дури и до таму што смеат да ги извршуваат бројните операции по друг редослед од ти што имаш наведено.
obi1kenobi



Joined: 18/02/2010 20:01:33
Messages: 168
Offline

vavio wrote:5тиот и 6тиот пример поминаа со точни излези. Останатите че ги допроверам.
Твоја сугестија е да ги претворам сите int во double или float и да пробам повторно со решението?
Моментално имам некоја идеја за поинаку да ја поставам задачата, па че видам што че излези

ИЗМЕНА:

И 7миот пример помина

ИЗМЕНА 2:

И 8миот пример помина

П.С
9тиот пример го немам, а 10тиот че го проверам друг пат(ме заболеа очите од внесување бројки )


Сугестијата на MOI е јасно дадена во вториот пост, пробај препрочитај го еднаш-двапати...
MOI



Joined: 07/07/2010 16:31:48
Messages: 447
Offline

@vavio: Можеби и ова ќе ти помогне:
    http://mendo.mk/download/greski.pdf

This message was edited 1 time. Last update was at 15/08/2011 22:32:56

vavio



Joined: 25/02/2010 14:40:01
Messages: 25
Offline

Благодарам на помошта, се среди задачата.
Темата можи да се затвори
 
Forum Index » Задачи од национални натпревари
Go to:   
Powered by JForum 2.1.8 © JForum Team