﻿/*
    Megjegyzések

    1. struktúrákat lehet = jellel másolni értékadáskor

    2. Egy struktúra valamely adattagja lehet szintén valamilyen
    struktúra típusú (önhivatkozások nélkül).
*/

// Pl. Háromszög, amit három Pont határoz meg.
#include <iostream>
#include <cmath>
using namespace std;

struct Pont
{
    double x, y;
};

struct Haromszog
{
    Pont p1, p2, p3;
};

double tavolsag(Pont p, Pont q)
{
    double dx = p.x - q.x;
    double dy = p.y - q.y;

    return sqrt(dx*dx + dy*dy);
}

double kerulet(Haromszog h)
{
    return tavolsag(h.p1, h.p2)
        + tavolsag(h.p2, h.p3)
        + tavolsag(h.p1, h.p3);
}

int main()
{
    Pont p1 {0,0}, p2 {0,1}, p3 {1,0};
    Haromszog h { p1, p2, p3 };

    cout << kerulet(h) << endl;


    return 0;
}

/*
    Helyben definiált belső struktúra
*/
/*
struct Haromszog
{
    struct
    {
        double x,y;
    } p1, p2, p3;

} h;

int main()
{
    // ....
    h.p1.x;
    h.p3.y;
    // stb.
    // ....
}
*/

