Kezdőoldal » Számítástechnika » Programozás » Ezt hogyan kell leprogramozni?

Ezt hogyan kell leprogramozni?

Figyelt kérdés

Van egy koordináta rendszer.

Abban megvan adva egy téglalap 4 pontja.

Ezen kívül van még egy pont.

Arról kell eldönteni, hogy a téglalapon belül, kívül vagy a határon van.

Én úgy oldottam meg, hogy if ágba raktam, hogy ha az X pont nagyobb, mint a téglalap X max, vagy kisebb, mint az X min, akkor nincs benne.

Else if ágra tettem azt, benne van, ennek a fordítottja.

Else ágon futott a határ.


Ezt elég gány megoldásnak érzem.

Tudtok jobbat?


2021. márc. 18. 21:37
1 2
 1/13 anonim ***** válasza:
43%

Ha programozol, el kell fogadnod, hogy nem minden megoldás lesz elegáns. Sőt... Sokszor a kevésbé elegáns megoldás a hatékonyabb.

Ha nekem kellene megoldani, akkor bevezetnék két egész típusú változót, amikben tárolom, hogy X és Y irányban milyen a viszonyul a téglalappal. Ha kívül van, akkor -1, ha rajta, akkor 0, és ha belül, akkor 1. Megvizsgálnám, hogy az X koordináta hogy viszonyul a téglalap oldalaihoz (csúcsaihoz), és ennek megfelelően álíltanám be az egyik változó értékét. Ez egy háromirányú elágazás, hogy konkrétan milyen módon valósítom meg, az nyelvtől is függ. (if... elsif ... else, stb.) Ugyanezt megcsinálom Y-ra is. Majd a két "állapot-változót" megvizsgálom. Ha mindkettő értéke 1, akkor a pont belül van. Ha legalább az egyik -1, akkor kívül van. Minden más esetben az oldalon van. De természetesen más úton is el lehet jutni a megoldáshoz.

2021. márc. 18. 22:07
Hasznos számodra ez a válasz?
 2/13 anonim ***** válasza:
83%
Hát a megoldásod nem jó. Sőt nagyon nem. Mert sok pontot bele fog venni ami nincs is a téglalapban. Pl. Vegyük a következő téglalapot: A=0;0 B=14.14;14.14; C=0;28.28; D=-14.14;14.1 (ez egy 45 fokkal elfordított 20 egység oldalhosszúságú négyzet, egyik csúcsa az origóra van téve). Xmax=14.14; Xmin=-14.14; Ymax=28.28; Ymin=0. Ebben a téglalapban nincs benne pl. az X=5;4 pont viszont a te algoritmusod szerint benne lesz. Miután a feladatban a 4 pont koordinátája van megadva, feltételezem, hogy általános helyzetű téglalapról van szó. Ez esetben csak a matek segít.
2021. márc. 18. 22:39
Hasznos számodra ez a válasz?
 3/13 tabaki ***** válasza:
100%

Nem értem, miért kellett lepontozni a második hozzászólót. Nem vettem a fáradságot, hogy utánajárjak a koordinátáinak, meg hirtelenjében tippem sincs a megoldásra, de nyilvánvaló, hogy az első ötleted nem működik. Én csak rajzoltam egy példát:

[link]

Az E pont láthatólag kívül esik a téglalapon, holott mindkét irányban a maximum és minimum közé esik. Alighanem abban is igaza van a kollégának, hogy a feladatnak elsőként a geometriai megoldását kéne megtalálni, a program részletei még várhatnak.

2021. márc. 18. 23:17
Hasznos számodra ez a válasz?
 4/13 tabaki ***** válasza:
100%

Támadt azóta egy elvi ötletem, csak én nem tudom koordinátageometriára lefordítani. Ehhez is rajzoltam egy ábrát:

[link]

Számold ki az ABE, BCE, CDE, ADE háromszögek területét. Ha ezek összege nagyobb az ABCD téglalapénál, akkor az E pont a téglalapon kívül van. Ha azonos vele, akkor belül, vagy a határon. Az utóbbi eset abban különbözik, hogy a négy háromszög egyikének (az ábrán az ADE) területe nulla. Mivel nem kell meghatároznod, hogy a pont melyik oldalra esik, például úgy is vizsgálhatod ezt az eshetőséget, hogy a területeket összeszorzod – ha nullát kapsz eredményül, akkor valamelyik tényező is nulla volt. Minthogy ez önmagában is jelzi, hogy a pont a határon van, tetszés szerinti sorrendben építheted egymásra a vizsgálatokat.

Megemlítendő, hogy itt nyilván törtszámokat kell használnod, tehát gondolj az adatábrázolás pontatlanságára. Ennek megfelelően ne pontos egyenlőséget, hanem valami észszerűen kicsire vett tűrést vizsgálj.

2021. márc. 19. 00:56
Hasznos számodra ez a válasz?
 5/13 anonim ***** válasza:
72%

#3: jogos. Nem mondta ki konkrétan, hogy az oldalaknakpárhozamosnak kell lenni a koordinátatengelyekkel. (Bár a megoldásában ő is már ezt feltételezte.)

Ez esetben viszont ez nem programozástechnikai, hanem koordinátageometriai feladat.

2021. márc. 19. 08:39
Hasznos számodra ez a válasz?
 6/13 A kérdező kommentje:

Ne haragudjatok.

Pontatlan voltam és nem írtam le, hogy párhuzamos.

Ezért nem foglalkoztam a többivel.

2021. márc. 19. 11:29
 7/13 Alex Fly ***** válasza:

Hát ha párhuzamosak, akkor a feladat triviális; egyetlen if-el eldönthető...

A pont koordinátái x és y, a téglalap két szemközti sarka Xmin,Ymin és Xmax,Ymax akkor ha x>Xmin és x<Xmax és y>Ymin és y<Ymax, akkor a téglalapon belül van. Ellenkező esetben kívül...

2021. márc. 19. 15:15
Hasznos számodra ez a válasz?
 8/13 anonim ***** válasza:
46%
Akkor minek van megadva 4 pont? 2 is elég. :)
2021. márc. 20. 00:32
Hasznos számodra ez a válasz?
 9/13 tabaki ***** válasza:
Akkor mégsem pontatlan volt Kérdező, hanem éppenhogy többletpontos...
2021. márc. 20. 02:27
Hasznos számodra ez a válasz?
 10/13 tabaki ***** válasza:
Ja, bocs, annyit még hozzátennék, hogy az átló két végpontja mindenképpen meghatározza a téglalapot, a helyzetétől függetlenül.
2021. márc. 20. 02:35
Hasznos számodra ez a válasz?
1 2

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!