Файл DotVec.h
Отчёт должен быть распечатан на листах А4 с использованием стандартных рамок. Отчёт должен содержать: Ø название дисциплины; Ø номер лабораторной работы; Ø тему лабораторной работы; Ø номер варианта; Ø общие требования к лабораторной работе; Ø тематические требования к лабораторной работе; Ø индивидуальное задание; Отчёт должен содержать код программы в следующем порядке: Ø интерфейсы классов – файлы *.h; Ø реализация классов – файлы *.cpp; Ø тело функции main () – файл main.cpp; Отчёт должен содержать результат работы вашей программы. Отчёт должен содержать выводы. В выводах вы перечисляете синтаксические приемы, которые были использованы вами при разработке программы.
Пример № 3 ТЕМА: В приведённом примере решена следующая задача: Заданы координаты двух вершин правильного треугольника. Определить координаты третьей вершины и его площадь.
Задача решается по следующему алгоритму: Действия Функция Ø вводим координаты точек A и B с клавиатуры Input (Dot&) Ø вычисляем вектор AB по координатам его концов Vector (const Dot&, const Dot&) Ø поворачиваем вектор AB на 60º и определяем вектор AC Rotate (const Vec&, double, Vec&) Ø прибавляем вектор AC к точке A и получаем точку C EndVec (const Dot&, const Vec&, Dot&) Ø выводим на экран координаты точки C Print (const Dot&) Ø длины сторон вычисляем по теореме Пифагора Dist (const Dot&, const Dot &) Ø вычисляем площадь треугольника по его вершинам Area (const Dot&, const Dot&, const Dot&) Проверка правильности работы программы: Ø вычисляем длины всех сторон треугольника Dist (const Dot&, const Dot&) Ø вычисляем значения всех углов треугольника Angle(const Dot&, const Dot&,const Dot&) При вычислении угла используются функции: Ø вычисление скалярного произведение двух векторов Scalar (const Vec&, const Vec&) Ø вычисление модуля вектора Modul (const Vec&) Для каждого действия объявляем соответствующую функцию-член в классах Dot и Vec. Файл DotVec.h ////////////////////////////////////////////////// подключение библиотек //////////////////////////////////////////////////// #include<iostream.h> // содержит функции ввода-вывода #include<windows.h> // содержит функцию CharToOem #include <math.h> // содержит математические функции
class Vec; // предварительное объявление класса ///////////////////////////////////////////////// интерфейс класса точки ///////////////////////////////////////////////// class Dot // класс точки { // закрытые члены класса double x, y; // координаты точки char name; // имя точки public: // открытые члены класса // конструкторы класса Dot (char Name): name (Name), x (0), y (0) { } // использует список инициализации Dot (char Name, double X, double Y) { name = Name; x = X; y = Y; } // функции, дружественные классу Dot friend void Print (const Dot & D); // выводит на экран имя и координаты заданной точки friend void Input (Dot & D); // вводит значения координат заданной точки с клавиатуры friend double Dist (const Dot & A, const Dot & B); // возвращает расстояние между заданными точками friend double Area (const Dot & A, const Dot & B, const Dot & C); // возвращает значение площади треугольника, образованного заданными точками friend double Angle (const Dot & A, const Dot & B, const Dot & C); // возвращает значение угла с вершиной в точке B // функции, дружественные классам Dot и Vec friend void Vector (const Dot & N, const Dot & K, Vec & V); // вычисляет вектор по координатам его концов friend void EndVec (const Dot & N, const Vec & V, Dot & K); // вычисляет координаты конца вектора }; /////////////////////////////////////////// интерфейс класса вектора ///////////////////////////////////////////////// class Vec // класс вектора { // закрытые члены класса double x, y; // проекции вектора char name [ 3 ]; // имя вектора public: // открытые члены класса // конструкторы Vec (char* pName): x (0), y (0) { strncpy (name, pName, 3); } Vec (char* pName, double X, double Y): x (X), y (Y) { strncpy (name, pName, 3); } // функции, дружественные классу Vec friend void Print (const Vec & V); // выводит на экран имя и проекции заданного вектора friend double Modul (const Vec & V); // возвращает длину заданного вектора friend double Scalar (const Vec & V, const Vec & W); // возвращает скалярное произведение заданных векторов friend void Rotate (const Vec & V, double f, 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); // вычисляет координаты конца вектора };
|