.


:




:

































 

 

 

 


6

,

C++ ( ) . . ++ : .

-. C++ . , . , .

, , friend.

1.

class Any

{

int n, d;

public:

Any (int p, int r) { n = p; d = r;}

friend bool isDel (Any s);

}

bool isDel (Any s)

{

if (!(s. n % s. d)) return true;

return false;

// return (s. n % s. d)? false: true;

}

int main ()

{

Any ob (12, 3);

if (isDel (ob)) cout <<"Yes"<< endl;

else cout <<"No"<< endl;

}

, . , , ( ). , , , , . , .

2.

Dot. h

class Dot //

{

const char name; //

double x, y; //

public:

Dot( char Name): name (Name) { x =0; y =0;}

Dot( char Name, double X, double Y): name (Name) { x = X; y = Y;}

inline double GetX () const {return x;}

inline double GetY () const {return y;}

inline void SetX (double X) { x = X;}

inline void SetY (double Y) { y = Y;}

double Dist (Dot B) const;

friend double Dist (const Dot & A, const Dot & B);

};

double Dist (Dot * pA, Dot * pB); //

double Area( const Dot & A, const Dot & B, const Dot & C);

Dot. cpp

double Dot:: Dist (Dot B) const

{

double X = B. x x;

double Y = B. y y;

return sqrt (X * X + Y * Y);

}

double Dot:: Dist (const Dot & A, const Dot & B)

{

double X = A. xB. x;

double Y = A. yB. y;

return sqrt (X * X + Y * Y);

}

double Dist (Dot * pA, Dot * pB)

{

double X = pA -> GetX ()− pB -> GetX (); //

double Y =* pA.GetY ()−* pB.GetY (); //

return sqrt (X * X + Y * Y); //

} //

double Area (const Dot & A, const Dot & B, const Dot & C)

{

double a = Dist (B, C);

double b = Dist (A, C);

double c = Dist (A, B);

double p =(a + b + c)/2.0;

return sqrt (p *(pa)*(pb)*(pc));

}

Main. cpp

int main ()

{

char S [30];

Dot A ('A', 3, 4), B ('B', −3, 4);

Dot C ('C');

CharToOem (" ", S);

cout << S <<"AB="<< A. Dist(B)<<'\n';

cout << S <<"BC="<< Dist (B, C)<<'\n';

cout << S <<"AC="<< Dist (& A, & C)<<'\n';

CharToOem (" ", S);

cout << S <<"ABC="<< Area (A, B, C)<<'\n';

}

Dot . .

double Dot:: Dist(Dot B) const Dot . const , . Dot, 17 . - : A. Dist (B), , .

friend double Dist (const Dot & A, const Dot & B) . const , . Dot, 4 . Dist (A, B). Dot, x y A B, Dot, , : A. x.

double Dist (Dot * pA, Dot * pB) . Dot, 4 . Dist (& A, & B). Dot, , x y A B. x y - GetX () GetY () , : pA -> GetX (). , .

, , .

double Area (const Dot & A, const Dot & B, const Dot & C), . Area (A, B, ). , Dot, . .

 

,

. , .


3.

DotVec. h

# include < iostream. h >

# include < windows. h >

# include < math.h >

class Vec; //

class Dot //

{

const char name; //

double x, y; //

public:

Dot( char Name): name(Name) { x =0; y =0;}

Dot( char Name, double X, double Y): name (Name) { x = X; y = Y;}

inline double GetX() const {return x;}

inline double GetY() const {return y;}

inline void SetX( double X) { x = X;}

inline void SetY( double Y) { y = Y;}

//

void EndVec (const Dot & A, const Vec & AB);

//

friend void EndVec (const Dot & A, const Vec & AB, Dot & B);

};

class Vec //

{

char name [3];

double x, y;

public:

Vec (char * pName) { strncpy (name, pName, 3); x =0; y =0;}

Vec (char * pName, double X, double Y) { strncpy (name, pName, 3); x = X; y = Y;}

//

Vec (char * pName, Dot A, Dot B);

double GetX () const {return x;}

double GetY () const {return y;}

//

void EndVec (const Dot & A, Dot & B);

//

friend void EndVec (const Dot & A, const Vec & AB, Dot & B);

};

DotVec. cpp

# include " DotVec. h "

Vec:: Vec (char * pName, Dot A, Dot B)

{

strncpy (name, pName, 3);

x = B.GetX () -A.GetX ();

y = B.GetY () -A.GetY ();

}

//

void Dot:: EndVec (const Dot & A, const Vec & AB)

{

x = A. x + AB. GetX ();

y = A. y + AB. GetY ();

}

void Vec:: EndVec (const Dot & A, Dot & B)

{

B. SetX (A. GetX ()+ x);

B. SetY (A. GetY ()+ y);

}

void EndVec (const Dot & A, const Vec & AB, Dot & B)

{

B. x = A. x + AB. x;

B. y = A. y + AB. y;

}

Main. cpp

# include " DotVec. h "

void main ()

{

Dot A ('A', 3, 4), B ('B',-3, 4);

Dot C ('C'), D ('D');

Vec AB ("AB", A, B);

Vec AC ("AC", 2, 2);

C. EndVec (A, AC);

AC. EndVec (A, C);

EndVec (A, AC, C);

}

: . Vec . , , DotVec. h.

Dot Vec .

void Dot:: EndVec (const Dot & A, const Vec & AB) Dot, . - Vec Dot, - Vec GetY () GetX (). - : C. EndVec (A, AC), C , A AC .

void Vec:: EndVec (const Dot & A, Dot & B) Vec, . . - Dot Vec, - Dot GetX (), GetY (), SetX (), SetY (). - : AC. EndVec (A, C), AC , A C .

friend void EndVec (const Dot & A, const Vec & AB, Dot & B) Dot Vec. friend. , . - Dot Vec , . EndVec (A, AC, C).

-,

. .

4.

DotVec. h

class Vec;

class Dot

{

public:

void EndVec (const Dot & A, const Vec & AB);

};

class Vec

{

public:

void EndVec (const Dot & A, Dot & B);

friend void Dot:: EndVec (const Dot & A, const Vec & AB);

};

DotVec. cpp

# include " DotVec. h "

void Dot:: EndVec (const Dot & A, const Vec & AB)

{

x = A. x + AB. x;

y = A. y + AB. y;

}

void Vec:: EndVec (const Dot & A, Dot & B)

{

B. SetX (A. GetX ()+ x);

B. SetY (A. GetY ()+ y);

}

void void Dot:: EndVec (const Dot & A, const Vec & AB) Dot, friend Vec. , Vec. - Vec , - Vec.

, , , . void Vec:: EndVec (const Dot & A, Dot & B) Dot, Vec Dot.

.

C++ , , . , , friend.

 

5.

class A

{

friend class B;

};

. , , .

6.

class Dot

{

friend class Vec; // Vec Dot

const char name;

double x, y;

public:

Dot (char Name): name (Name){ x =0; y =0;}

Dot (char Name, double X, double Y): name (Name) { x = X; y = Y;}

void Print () const;

};

class Vec

{

char name [ 3 ];

double x, y;

public:

Vec (char * pName) { strncpy (name, pName, 3); x =0; y =0;}

Vec (char * pName, double X, double Y) { strncpy (name, pName, 3); x = X; y = Y;}

Vec (char * pName, Dot A, Dot B);

void Print ();

void EndVec (const Dot & A, Dot & B);

};

. , , C++ . .

7.

class B; // !

class A

{

friend class B;

};

class B

{

friend class A;

};

, , , A B, , -.

:

: A B, , B A;

: B A, , B, A;

: B A, B , A.



<== | ==>
, | Input ( ) Coord Dot Vec
:


: 2016-11-03; !; : 525 |


:

:

: , .
==> ...

2031 - | 1664 -


© 2015-2024 lektsii.org - -

: 0.111 .