#include <iostream>
#include <conio.h>
#include <windows.h>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
class CPoint
{
double x, y; //Закрытые элементы данных
public:
// Функции, обеспечивающие доступ:
double GetX(){return x;}
double GetY(){return y;}
void SetX(double _x){x = _x;}
void SetY(double _y){y = _y;}
// Функции ввода-вывода:
void Input();
void Output();
/* Функция, вычисляющая длину отрезка между двумя точками:
первой точкой будет та, к которой применяется эта функция, а второй – та, которая передается как параметр функции (точка p). Обратите внимание, как происходит обращение к координатам той и другой точки. */
double Len(CPoint p)
{
return sqrt(pow(x-p.x, 2)+pow(y-p.y, 2));
};
}; // Описание класса закончено
/* Объявление функции, вычисляющей периметр треугольника:
координаты вершин будут храниться в массиве, указатель на который передается как параметр функции. */
double Perimeter(CPoint*);
// Пример главной программы:
int main()
{
//Настройки шрифтов и региональных стандартов:
if(SetConsoleCP(1251)==0)
//проверка правильности установки кодировки символов для ввода
{
cerr<<"Fialed to set codepage!"<<endl;
|
|
/* если не удалось установить кодовую страницу, вывод сообщения об ошибке */
}
if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода
{
cerr<<"Failed to set OUTPUT page!"<<endl;
}
CPoint p[3]; // массив точек
// Считываем координаты вершин треугольника:
for (int i=0; i<3; i++)
{
p[i].Input();
}
cout << "Периметр треугольника = " << Perimeter(p) << endl;
//Сдвигаем первую точку на 1 по X и на 2 по Y:
p[0].SetX(p[0].GetX()+1);
p[0].SetY(p[0].GetY()+2);
cout << "Периметр нового треугольника = " << Perimeter(p) << endl;
_getch();
return 0;
}
// Определение функций:
// Определение функции, вычисляющей периметр треугольника:
double Perimeter(CPoint* p)
// Эта функция не является членом класса
{
int len = 0;
// Складываем длины сторон треугольника:
for (int i = 0; i < 3; i++)
{
/* Обратите внимание на то, как обеспечивается то, что номер точки должен быть от 0 до 2: */
len+=p[i].Len(p[(i+1) % 3]);
}
return len;
}
// Функция для ввода данных:
void CPoint::Input()
{
static int i=1; /* Статическая переменная, которая позволит нам нумеровать считываемые точки */
cout<<"Задайте координаты "<< i++ << " точки ";
cin >> x >> y;
}
// Функция для вывода данных:
void CPoint::Output()
{
static int i=1;
cout << "Координаты " << i << " точки: " <<
x << y << endl;
}