C / c++_лаб_1.01_пространства_имен
.docxЛабораторная работа №1. Использование пространства имен.
Согласно варианту описать указанные типы данных и поместить их в отдельный заголовочный файл. Аналогично поступить с функциями. Реализацию функций выполнить в отдельном файле.
Типы данных и функции разместить в соответствующем пространстве имен.
Написать программу, использующую описанные типы данных: инициализация переменных (ввод пользователя), выполнение действий (в зависимости от дальнейшего ввода пользователя).
Варианты.
№ |
Тип данных |
Функции |
1 |
Комплексное число |
Умножение комплексного числа на вещественное число. Сложение двух комплексных чисел. Умножение двух комплексных чисел. Длина комплексного числа. |
2 |
Квадрат на плоскости (задаются координаты трех точек – квадрат может быть «повернут»). |
Проверка правильности данных (не любые три точки задают квадрат!). Вычисление площади. Для проверки правильности данных проверьте равенство двух сторон и убедитесь, что угол между ними прямой. |
3 |
Двумерный вектор. |
Расчет угла между двумя векторами. Поворот вектора на заданный угол. |
4 |
Прямая на плоскости (задается параметрами уравнения). |
Проверка на параллельность двух прямых. Вычисление параметров уравнения прямой по двум точкам. Случай прямой x = const можно не рассматривать (однако, его рассмотрение приведет к повышению баллов «ЛК»). |
5 |
Треугольник на плоскости (задается тремя точками). |
Вычисление площади (можно использовать, например, формулу Герона). |
6 |
Шар в R3 (задается центром и радиусом). |
Проверка на пересечение двух шаров. Нахождение минимального расстояния между двумя шарами. |
7 |
Квадратный многочлен (ax2+bx+c) |
Значение в заданной точке x. Нахождение корней многочлена. |
8 |
Матрица 3x3 |
Вывод матрицы на экран. Перемножение двух матриц. Умножение матрицы на число. |
|
|
|
|
|
|
|
|
|
Примечания.
Для всех вариантов описать и реализовать функцию print, которая бы выводила параметры объекта на экран (например для шара: координаты его центра и радиус).
Если для выполнения задания удобно определить дополнительные типы данных и функции – их, естественно, можно и нужно определять.
Все определения (как основные так и дополнительные) следует размещать в двух разных заголовочных файлах (один для типов данных, второй – для функций). Реализацию функций – разместить в отдельном cpp файле. Текст программы (функция main), проверяющий работу разработанный функций, также следует разместить в отдельном файле. Итого – 4 файла.
В заголовочных файлах используйте namespace. В cpp файлах либо разрешайте пространство имен с помощью :: либо же используйте using namespace.
Пример выполнения (студентам не показывать, но необходимо пояснить, что от них требуется). Также возможно изменение вариантов (добавить функции и проч.), если мои кажутся не очень хорошими/сложными/легкими или же есть какие-то другие идеи.
// -------------- complex_types.h
#ifndef _COMPLEX_TYPES_H_
#define _COMPLEX_TYPES_H_
namespace CNS {
typedef struct Complex { double x; double y; };
}
#endif
// --------------
// -------------- complex_funs.h
#ifndef _COMPLEX_FUNS_H_
#define _COMPLEX_FUNS_H_
#include “complex_types.h”
namespace CNS {
Complex mul( double k );
Complex mul( Complex a, Complex b );
Complex sum( Complex a, Complex b );
double len( Complex a );
}
#endif
// --------------
// -------------- complex_funs.cpp
#include “complex_funs.h”
using namespace CNS;
Complex mul( double k ) { /*…*/ }
Complex mul( Complex a, Complex b ) { /*…*/ }
Complex sum( Complex a, Complex b ) { /*…*/ }
double len( Complex a ) { /*…*/ }
// --------------
// -------------- main.cpp
#include “complex_funs.h”
#include <cstdio>
int main() {
CNS::Complex a, b;
double x;
// Инициализация двух переменных типа Complex с клавиатуры.
// Запрос у пользователя на тип операции (сложение, умножение и т.д.)
// Выполнение операции, вывод результата не экран.
return 0;
}
// --------------