NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Nick01
Člen
Avatar
Nick01:13.12.2016 20:41

Zdravím všechny, mám problém s jedním zadáním

viz. http://www.imgup.cz/image/L9Rf

množina bodů má být n=50

Body jsou v Points.txt - vypadá to takhle http://pastebin.com/PqUGtajU

Body jsem načetl ze souboru, funkci jsem taky udělal - bohužel asi nerozumím zadání. Nevím jak do těch bodů A,B,C dát ty jednotlivé souřadnice - tak ať to potom počítá ten obsah - viz. zadání.

Může mi někdo pomoci?

Můj kód:

http://pastebin.com/nwdYDMpp (to s v tom obsah (s,a,b,c) už nemám

U té troj-kombinace mě napadají tři vnořené cykly for, ale teď uvažuji, jak je správně implementovat. Může mi někdo poradit?

 
Odpovědět
13.12.2016 20:41
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Nick01
ostrozan:15.12.2016 13:32

nevím jestli dobře chápu tvůj problém, ale tady

double a = sqrt((Bx - Cx)*(Bx - Cx) + (By - Cy)*(By - Cy));

bych to buď ještě uzávorkoval - myslím že není jisté, že překladač bude ctít priority operátorů
a nebo to upravil

double a = sqrt(pow(Bx -Cx,2) + pow(By -Cy,2));

ale hlavně - tvoje funkce má tři parametry

double obsah(double a, double b, double c)

a ty ji voláš se čtyřmi

double obs = obsah(s, a, b, c);

to ti musí hlásit chybu

no matching overloaded function found

 
Nahoru Odpovědět
15.12.2016 13:32
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Nick01
ostrozan:15.12.2016 16:51

nevím na co jsem hleděl, že jsem přehlédl do očí bijíci blbost :-)

tady

for (int i = 0; i < n; i++)
 {
     vstup >> bodu[i].x >> bodu[i].y;
     cout << bodu[i].x << " " << bodu[i].y << endl;

     double Ax = bodu[i].x;//
     double Ay = bodu[i].y;// tady
     double Bx = bodu[i].x;// davas
     double By = bodu[i].y;// stejne
     double Cx = bodu[i].x;// hodnoty
     double Cy = bodu[i].y;//

     double a = sqrt((Bx - Cx)*(Bx - Cx) + (By - Cy)*(By - Cy));
     double b = sqrt((Ax - Cx)*(Ax - Cx) + (Ay - Cy)*(Ay - Cy));
     double c = sqrt((Ax - Bx)*(Ax - Bx) + (Ay - By)*(Ay - By));
     double obs = obsah(s, a, b, c);
     cout << obs << endl;
 }

dáváš Ax,Bx,Cx a stejně tak Ay,By,Cy stejné hodnoty - takže při výpočtu "nula od nuly pojde"

nebudu ti psát jak to má vypadat - to se nic nenaučíš - ale radu ti dám - stvoř si - nejlépe třídu - ale stačí i struktura "Trojuhelnik" která bude obsahovat souřadnice vrcholů a obsah a stím pak pracuj
pa k se s výsledkem "pochlub" pro posouzení

 
Nahoru Odpovědět
15.12.2016 16:51
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.