Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП 03 Пример Дружественные функции.doc
Скачиваний:
13
Добавлен:
14.02.2015
Размер:
95.23 Кб
Скачать

Vec (char* pName ) : X ( 0 ) , y ( 0 ) { strncpy ( name , pName , 3 ) ; }

Vec ( char* pName ,doubleX ,doubleY ) : X ( X ) , y ( y ) { strncpy ( name , pName , 3 ) ; }

// функции, дружественные классу Vec

friend void Print ( const Vec & V ) ; // выводит на экран имя и проекции заданного вектора

friend double Modul ( const Vec & V ) ; // возвращает длину заданного вектора

frienddoubleScalar (constVec & V ,constVec & W ) ;

// возвращает скалярное произведение заданных векторов

friendvoidRotate (constVec & V ,doublef , Vec & W ) ;

// поворачивает заданный вектор на заданный угол

// функции, дружественные классам Dot и Vec

friend void Vector(const Dot&N,const Dot&K,Vec&V);

// вычисляет вектор по координатам его концов

friend void EndVec(const Dot&N,const Vec&V,Dot&K);

// вычисляет координаты конца вектора

} ;

Файл DotVec.Cpp

#include"DotVec.h"

//////////////////////////// РЕАЛИЗАЦИЯ функциЙ, дружественных классу Dot //////////////////////////////////

// выводит на экран имя точки и значения координат заданной точки

Void Print ( const Dot & d ) // константная ссылка на заданную точку

{

char S [ ] ="Координаты точки "; // объявляет и инициализирует строку заголовка

CharToOem ( S , S ) ; // преобразует символы строки в кириллицу

cout<<S<<D.name<<" :"; // выводит на экран заголовок и имя точки

cout<<"\tx = "<<D.x<<"\ty = "<<D.y<<'\n' ; // выводит на экран значения координат

}

// вводит значения координат заданной точки с клавиатуры

Void Input ( Dot & d ) // ссылка на заданную точку

{

char S [ ] =”Введите координаты точки ”; // объявляет и инициализирует строку приглашения

CharToOem ( S , S ) ; // преобразует символы строки в кириллицу

cout<<S<<D.name<<'\n' ; // выводит на экран приглашение и имя точки

cout <<"\tx="; cin >>D.x ; // вводит значение абсциссы точки с клавиатуры

cout <<"\ty="; cin >>D.y ; // вводит значения ординаты точки с клавиатуры

}

// возвращает расстояние между заданными точками

double Dist ( const Dot & A , const Dot & B ) // константные ссылки на заданные точки

{

double X = A.x – B.x ; // объявляет и инициализирует

double Y = A.y – B.y ; // катеты прямоугольного треугольника

return sqrt ( X*X + Y*Y ) ; // возвращает значение гипотенузы прямоугольного треугольника

}

// возвращает значение площади треугольника, образованного заданными точками

doubleArea (constDot & A ,constDot & B ,constDot & C )

{ // константные ссылки на вершины треугольника

double a = Dist ( C , B ) ; // объявляет и вычисляет

double b = Dist ( C , A ) ; // длины сторон треугольника

doublec = Dist ( A , B ) ;

double p = ( a+b+c ) / 2.0 ; // объявляет и вычисляет длину полупериметра

return sqrt ( p*( p – a )*( p – b )*( p – c )) ; // вычисляет площадь треугольника по формуле Герона

}

// возвращает значение угла в градусах с вершиной в точке B

doubleAngle (constDot & A ,constDot & B ,constDot & C )

{ // константные ссылки на заданные точки

constdoublepi = 4*atan ( 1.0 ) ;// объявляет константу π