Author |
Message |
10/08/2011 22:28:17
|
vavio
Joined: 25/02/2010 14:40:01
Messages: 25
Offline
|
Задачата ми е решена, но ми поминува само на првите четири случаеви. 5тиот тест случај го симнав и го пробав рачно и даде точен одговор, но не ми поминува на страницата
|
|
|
10/08/2011 22:43:08
|
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
|
|
|
14/08/2011 22:17:57
|
vavio
Joined: 25/02/2010 14:40:01
Messages: 25
Offline
|
Добро еве да земиме дека грешката се јавува тука, но како е можно локално да ми дава точен излез, а на страната на истиот пример да вели дека има грешен излез?
|
|
|
15/08/2011 00:18:21
|
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
|
|
|
15/08/2011 12:58:37
|
vavio
Joined: 25/02/2010 14:40:01
Messages: 25
Offline
|
како програма која ја користам за компајлирање е CodeBlocks која исто така ја препорачувате вие и ја користите на натпревари. За 64 битен процесор немам, така да и тоа не е
Моментално не сум дома па кога ќе стасам ќе проверам на 3 различни случаеви што ми дава грешка
5тиот, 6тиот и 10тиот
|
|
|
15/08/2011 15:45:50
|
MOI
Joined: 07/07/2010 16:31:48
Messages: 447
Offline
|
Океј е, го извршив твојот код на ideone.com и, барем на 5-тиот тест пример (на тој тестирав), дава точен резултат така што верувам дека и кај тебе го печати истото.
Сепак, самиот факт што на неколку компјутери се добива различен резултат, и тоа што на овој форум и на многу други поврзани со натпревари по информатика има слични теми, е доволен доказ дека не треба на тој начин да претвораш реален број во цел. Едноставно, ако ги прочиташ информациите дадени на линковите што ги споменав во овие две теми, ќе видиш дека не треба многу да веруваш на операциите со реални броеви - а особено не на функции како pow (не можам да најдам таква информација за C++, но во документацијата на Јава јасно пишува дека методот не ја враќа секогаш точната вредност - дадена е и прецизноста која треба да се очекува).
|
|
|
15/08/2011 20:53:48
|
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
|
|
|
15/08/2011 21:12:35
|
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. А компајлерот и линкерот имаат комплетна дискреција по прашањето на оптимизација и преуредување на кодот, дури и до таму што смеат да ги извршуваат бројните операции по друг редослед од ти што имаш наведено.
|
|
|
15/08/2011 21:15:00
|
obi1kenobi
Joined: 18/02/2010 20:01:33
Messages: 168
Offline
|
vavio wrote:5тиот и 6тиот пример поминаа со точни излези. Останатите че ги допроверам.
Твоја сугестија е да ги претворам сите int во double или float и да пробам повторно со решението?
Моментално имам некоја идеја за поинаку да ја поставам задачата, па че видам што че излези
ИЗМЕНА:
И 7миот пример помина
ИЗМЕНА 2:
И 8миот пример помина
П.С
9тиот пример го немам, а 10тиот че го проверам друг пат(ме заболеа очите од внесување бројки )
Сугестијата на MOI е јасно дадена во вториот пост, пробај препрочитај го еднаш-двапати...
|
|
|
15/08/2011 22:32:37
|
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
|
|
|
16/08/2011 12:25:36
|
vavio
Joined: 25/02/2010 14:40:01
Messages: 25
Offline
|
Благодарам на помошта, се среди задачата.
Темата можи да се затвори
|
|
|
|