Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 303 Patrate 3  (Citit de 5872 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« : Ianuarie 21, 2007, 23:56:46 »

Aici puteţi discuta despre problema Patrate 3.
« Ultima modificare: Ianuarie 30, 2007, 20:50:26 de către Crestez Dan-Leonard » Memorat
Prostu
Nu mai tace
*****

Karma: 134
Deconectat Deconectat

Mesaje: 323



Vezi Profilul
« Răspunde #1 : Ianuarie 24, 2007, 19:24:32 »

Am incercat sa rezolv problema ca la carte, cu numere intregi, evitand astfel orice fel de erori de precizie. Numarul citit l-am inmultit cu 10000 si mai apoi cu inca 10, pentru a nu avea probleme la impartirea la 2. Astfel valoarile variaza intre [-109, 109] si prin toate operatiile nu se trece de 2 * 109 (cred...). Problema mea este ca respectiva sursa ia doar 5 puncte. Am modificat structura sa lucreze cu numere de tip float, citirea si functia de comparatie, si am luat 100 de puncte Surprised.
Acum, nu stiu ce sa cred. Citirea numerelor in primul caz o faceam astfel
Cod:
        const int ZEC = 10000;	
        for (i = 0; i < N; ++i) {
fscanf(fin, " %d.%d", &u, &v);
A[i].x = (u * ZEC + v) * 10;

fscanf(fin, " %d.%d", &u, &v);
A[i].y = (u * ZEC + v) * 10;
}
Care ar fi problema?
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #2 : Ianuarie 24, 2007, 19:50:31 »

daca numarul e negativ trebuie sa scazi partea fractionara.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Prostu
Nu mai tace
*****

Karma: 134
Deconectat Deconectat

Mesaje: 323



Vezi Profilul
« Răspunde #3 : Ianuarie 24, 2007, 19:54:54 »

Multumesc.
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #4 : Ianuarie 24, 2007, 20:52:22 »

Ai grija cum citesti -0.3 de asemenea Tongue cand citesti -0 cu %d o sa-ti dea u = 0 si o sa crezi ca numarul e pozitiv..

Oricum .. nu inteleg de ce trebuie sa te chinui asa.. la problema asta iti trebuie o inmultire si o scadere.. nu prea ai cum sa ai probleme de precizie...
Memorat
mocke
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 19



Vezi Profilul WWW
« Răspunde #5 : Ianuarie 24, 2007, 21:19:31 »

Si eu am avut o problema asemanatoare...luam 60p (4 TLE) si aveam variabile de tip double (cautare pe double, comparare pe double)...cand am schimbat in float am luat 85...si cand am schimbat si ABS-ul de mana cu fabs am luat 100... Think
Aveti vreo idee de ce s-a intamplat asta?
Memorat

oricine greseste...nu oricine invatza
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #6 : Ianuarie 24, 2007, 21:47:00 »

probabil faceai 'abs de mana' gresit, cel mai sigur ii sa il folosesti cel predefinit
apropo eu am folosit double si a mers fara probleme.
Memorat

vid...
danielp
Vorbaret
****

Karma: 34
Deconectat Deconectat

Mesaje: 194



Vezi Profilul
« Răspunde #7 : Ianuarie 25, 2007, 21:53:57 »

Merge foarte bine cu numere reale de orice tip, nu cred ca e esential daca folosesti float sau double. Am dat-o pe numere reale ca sa fac mai usor testele, nu ca sa o fac mai grea:)
Memorat

I can't get a life if my heart's not in it
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #8 : Februarie 12, 2007, 11:45:45 »

care sunt cele 2 patrate din exemplu?? ma intereseaza numerele de ordine ale punctelor dak mi le puteti da.
Memorat
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #9 : Februarie 12, 2007, 19:44:43 »

Uite exact punctele.

pt primul :
9.100000 26.510000
35.930000 34.870000
26.695000 17.275000
18.335000 44.105000

pt al doilea :
49.150000 50.690000
91.320000 13.360000
51.570000 10.940000
88.900000 53.110000
Memorat

vid...
Robytzza
De-al casei
***

Karma: -49
Deconectat Deconectat

Mesaje: 129



Vezi Profilul
« Răspunde #10 : Februarie 04, 2008, 15:13:17 »

Am incercat sa rezolv problema astfel: iau oricare 2 puncte si folosesc o cautare binara pentru  a cauta celelalte 2 puncte cu care pot forma un patrat ..nushtiu ce gresesc..iau doar 70 ,am trecut in long si am inmultit cu 10000 si tot 70 pct..sa fie cumva o greseala in program? sad  peacefingers
Memorat
Protoman
Infoarena Monthly
De-al casei
*****

Karma: 119
Deconectat Deconectat

Mesaje: 128



Vezi Profilul
« Răspunde #11 : Februarie 04, 2008, 16:34:09 »

tu cum consideri cele 2 puncte pe care le iei din prima , ca fiind diagonala sau ca fiind o latura? ca daca le iei ca fiind o latura ai grija ca ai 2 optiuni pentru celelalte una intr-o parte una in cealalata  wink
Memorat
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #12 : Februarie 04, 2008, 16:44:18 »

Incearca si ideea de aici daca nu merge : http://infoarena.ro/preoni-2007/runda-1/solutii
Memorat

vid...
Robytzza
De-al casei
***

Karma: -49
Deconectat Deconectat

Mesaje: 129



Vezi Profilul
« Răspunde #13 : Februarie 04, 2008, 18:10:54 »

imi cer scuze ..am uitat de solutii Sad Aha
pentru Protoman: o iau ca fiind latura si am luat in considerare cele 2 cazuri , adik elimin un caz dupa sortare
Memorat
ssergiuss
Strain


Karma: 41
Deconectat Deconectat

Mesaje: 24



Vezi Profilul
« Răspunde #14 : Februarie 28, 2009, 16:28:11 »

Am o problema cu problema asta. Nu stiu de ce nu imi compara bine variabilele reale (am incercat si cu float si cu double). Am mers in borland pas cu pas si imi arata ca 26.695 > 26.695  Think. Ma poate ajuta cineva?
Memorat
DraStiK
Nu mai tace
*****

Karma: 131
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #15 : Februarie 28, 2009, 16:42:20 »

probabil daca faci o functie de comparare va merge

Cod:
int compara (double a,double b)
{
    if (fabs (a-b)<=0.00001)
        return 1;
    return 0;
}

sper sa fiu de ajutor Very Happy
« Ultima modificare: Februarie 28, 2009, 18:43:11 de către Oprica Dragos » Memorat
ssergiuss
Strain


Karma: 41
Deconectat Deconectat

Mesaje: 24



Vezi Profilul
« Răspunde #16 : Februarie 28, 2009, 17:24:46 »

Mersi  Yahoo! ! Pana la urma am facut'o de 100, folosind functia de comparare. Dar totusi as vrea sa stiu de ce nu compara bine numerele reale.
Memorat
c_e_manu
Nu mai tace
*****

Karma: 56
Deconectat Deconectat

Mesaje: 243



Vezi Profilul
« Răspunde #17 : Februarie 28, 2009, 17:28:09 »

fiindca numerele reale au prea multe zecimale pentru a le afisa... si prin rotunjire ajung egale... de ex a=2,669 si b=2,668... a>b, dar luand doar 2 zecimale a=2,67 si b=2,67... sper ca ai inteles ce am vrut sa zic aici  Tongue
Memorat
ssergiuss
Strain


Karma: 41
Deconectat Deconectat

Mesaje: 24



Vezi Profilul
« Răspunde #18 : Martie 03, 2009, 14:31:12 »

Mersi! Smile
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines