/* FRIEND.CPP */ /* Esimerkiss„ tehd„„n funktiot, jotka kertovat mahtuuko ympyr„ neli””n ja p„invastoin. Jottei teht„v„st„ tulisi liian matemaattista, tutkitaan vain olioden kokoja. Oikeasti mielekk„„mpi teht„v„ tutkia leikkaavatko oliot toisiaan ja t„ll”in tarvittaisiin tietysti my”s keskipisteit„ */ #include #include class cNelio; // Eteenp„in viittaus jotta void. k„yt. ympyr„ss„ class cYmpyra{ double r; // S„de public: cYmpyra(double d=1.0) { r = d; } friend mahtuuko(const cYmpyra &y, const cNelio &n); friend mahtuuko(const cNelio &n, const cYmpyra &y); friend mahtuuko(const cYmpyra &y1, const cYmpyra &y2); }; class cNelio{ double s; // Sivun pituus public: cNelio(double d=1.0) { s = d; } friend mahtuuko(const cYmpyra &y, const cNelio &n); friend mahtuuko(const cNelio &n, const cYmpyra &y); friend mahtuuko(const cNelio &n1, const cNelio &n2); }; int mahtuuko(const cYmpyra &y, const cNelio &n) { return ( 2*y.r < n.s ); } int mahtuuko(const cNelio &n, const cYmpyra &y) { return ( sqrt(2.0)*n.s/2 < y.r ); } int mahtuuko(const cYmpyra &y1, const cYmpyra &y2) { return ( y1.r < y2.r ); } int mahtuuko(const cNelio &n1,const cNelio &n2) { return ( n1.s < n2.s ); } int main(void) { cNelio n1(2.1),n2(2.5); cYmpyra y1(0.9),y2(1.2); if ( mahtuuko(n1,y1) ) printf("Neli” 1 mahtuu ympyr„n 1 sis„lle.\n"); if ( mahtuuko(y1,n1) ) printf("Ympyr„ 1 mahtuu neli”n 1 sis„lle.\n"); if ( mahtuuko(y1,y2) ) printf("Ympyr„t mahtuvat sis„kk„in.\n"); if ( mahtuuko(n1,n2) ) printf("Neli”t mahtuvat sis„kk„in.\n"); return 0; }