Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C / c++_лаб_1.01_пространства_имен

.docx
Скачиваний:
35
Добавлен:
21.03.2016
Размер:
21.67 Кб
Скачать

Лабораторная работа №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;

}

// --------------