Kezdőoldal » Számítástechnika » Programozás » Ez a programrészlet így jó?

Ez a programrészlet így jó?

Figyelt kérdés

Kezdő programozó vagyok és egy olyan programot próbáltam írni, amely adott négy pontra meghatározza, hogy az alkothat vagy sem négyzetet. A gondom az lenne, hogy nem tudom, hogy minden értékre jól működik vagy sem.


bool negyzet_e(Pont a, Pont b, Pont c, Pont d){

if (egyenlo(a,b) || egyenlo(a,c) || egyenlo(a,d) || egyenlo(b,c) || egyenlo(b,d) || egyenlo(c,d)){return false;}


int t1 = tavolsag(a,b), t2 = tavolsag(a,c), t3 = tavolsag(a,d), t4 = tavolsag(b,c), t5 = tavolsag(b,d);

if (t1 == t4 && t1 != t5 && t1 != t2 && t3 == t1 && t2 == t5){

return true;

}

return false;

}


bool egyenlo(Pont a, Pont b){

if (a.getX() == b.getX() && a.getY() == b.getY()) {return true;}

return false;

}


int tavolsag (Pont a, Pont b){

int x1 = a.getX(); int y1 = a.getY();

int x2 = b.getX(); int y2 = b.getY();

int t = sqrt(pow(x1-x2,2) + pow(y1-y2,2));

return t;

}



2018. okt. 12. 12:03
 1/8 anonim ***** válasza:
30%

Nem jó. Egyrészt fölöslegesen sok számítást végez, másrészt mi van, ha nem sorrendben vannak a pontok? Pl. ha egy négyzet csúcsait úgy kapja a program, hogy A és B valamint A és C az átlósan szemközti csúcspontok, akkor hamis értékkel fog visszatérni, holott lehet belőlük négyzetet alkotni.


Azt kell vizsgálni, hogy minden pontnak kell egy szomszéd, amivel az X és egy másik, amivel az Y koordinátájuk egyezik meg.

2018. okt. 12. 12:43
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
Elírtam: A és B valamit C és D a szemközti csúcsok.
2018. okt. 12. 12:44
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:

"Azt kell vizsgálni, hogy minden pontnak kell egy szomszéd, amivel az X és egy másik, amivel az Y koordinátájuk egyezik meg."

Kivéve, hogy ennek abszolút semmi köze a négyzetséghez.

Egyrészt attól, hogy a szomszédokkal egyezik 1-1 koordináta, attól még nem feltétlenül négyzet másrészt akkor ha nem egyik még lehet négyzet.

2018. okt. 12. 13:01
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
#3: Jogos. Lehet elforgatva is a négyzet...
2018. okt. 12. 13:18
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:

Egy infó forrás a sok közül:

[link]

Egy másik megközelítés: Minden pontra igaz, hogy a többi három pont közül bármely kettővel alkotott háromszög adott pontbeli szöge 45 fok. (pl. az A pontban az ABC és ACD háromszögben, stb., függetlenül a pontok sorrendjétől. A szögek pl. az oldalak meredekségeiből számíthatók, csak vigyázni kell az előjelekkel.)

2018. okt. 12. 13:26
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:
68%

Definíció szerint a négyzet minden oldala egyenlő hosszúságú és oldalai derékszöget zárnak be.

A négy pont között hat távolság vehető fel, ezek közül a négy rövidebbnek kell egyenlőnek lenni (ezek az oldalak),illetve a két hosszabbnak (ezek az átlók).

Ezt csinálnám:

1, a hat távolság kiszámolása, tömbbe helyezése

2, a tömb rendezése növekvő sorrendbe

3, az első és a negyedik egyenlőségének vizsgálata - ha az első és a negyedik egyenlő, akkor a sorbarendezettség miatt az első négy elem egyenlő

4, az ötödik és a hatodik távolság egyenlőségének vizsgálata

5, Ha a 3 és 4 feltételek teljesülnek: a négy pont négyzetet alkot, egyébként nem


Az egyelőségek vizsgálatánál a lebegőpontos számábrázolás jellegzetességei miatt nem szabad pontos egyenlőséget (==) vizsgálni.

2018. okt. 12. 13:29
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:
#2: A geometriában a sokszögek csúcsait körüljárási irányban szokás betűzni. Ha A és B szemközt van, akkor az alakzat nem négyzet, még akkor sem, ha a konvex burok négyzet. Persze lehetne azt is vizsgálni.
2018. okt. 12. 17:34
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
100%
#7: A programozásban nincs "szokás", ott fel kell készülni minden eshetőségre. A feladat úgy szólt, hogy meg kell mondani hogy adott négy pont alkothat-e négyzetet vagy sem. Ha nem körüljárási sorrendben vannak a pontok, attól még alkothatnak négyzetet és igaz választ kell adnia a programnak ha így van.
2018. okt. 13. 08:44
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!