Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- struct Pct {
- // o structura, un alt tip de date ce contine mai multe tipuri de date primitve
- int x, y;
- };
- float dist(const Pct& a, const Pct& b)
- {
- // distanta dintre 2 puncte a si b
- return sqrt(pow(b.x - a.x, 2) + pow(b.y - a.y, 2));
- }
- float area(float a, float b, float c)
- {
- // Heron pentru arie
- float s = (a + b + c) / 2;
- return sqrt(s * (s - a) * (s - b) * (s - c));
- }
- int main()
- {
- Pct tr[3], m; // cele 3 puncte si punctul M
- for (int i = 0; i < 3; ++i) {
- cout << "Coordonate pentru punctul " << i << " (x y): ";
- cin >> tr[i].x >> tr[i].y;
- }
- cout << "Coordonate pentru punctul M" << " (x y): ";
- cin >> m.x >> m.y;
- float lat[3]; // dimensiunile laturilor triunghiului
- // lat[i] este latura opusa punctului `i`
- lat[0] = dist(tr[1], tr[2]);
- lat[1] = dist(tr[0], tr[2]);
- lat[2] = dist(tr[0], tr[1]);
- // acum "unim" punctul M cu fiecare dintre punctele A, B si C si calculam celelalte laturi
- float mLat[3]; // mLat[i] este segmentul avand ca extremitati pe M si pe punctul `i`
- mLat[0] = dist(m, tr[0]);
- mLat[1] = dist(m, tr[1]);
- mLat[2] = dist(m, tr[2]);
- float sup[3]; // ariile celor 3 triunghiuri formate de punctul M si oricare alte 2 puncte
- sup[0] = area(lat[0], mLat[1], mLat[2]);
- sup[1] = area(lat[1], mLat[0], mLat[2]);
- sup[2] = area(lat[2], mLat[0], mLat[1]);
- // acum daca cele 3 arii, in care a fost impartit triunghiul insumate dau cat aria triunghiului ABC
- // e clar ca punctul M se afla in interior
- if (sup[1] + sup[2] + sup[3] == area(lat[0], lat[1], lat[2])) cout << "DA";
- else cout << "NU";
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement