Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Топ:
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Дисциплины:
2017-06-05 | 321 |
5.00
из
|
Заказать работу |
|
|
В языке C++ для работы с динамической памятью введены операции new и delete [5, 8-9], которыми можно пользоваться наряду с функцией стандартной библиотеки С malloc, calloc и free.
Операция new используется как для выделения памяти для одного объекта (при этом возможна инициализация выделенной памяти передаваемым значением), так и для массива однородных объектов. Операция new возвращает адрес начала выделенной динамической памяти соответствующего типа.
Ее синтаксис: new тип;
new тип (выражение-инициализатор);
new тип [ выражение_размерность_массива ];
Операция delete освобождает распределенную операцией new память. Ее синтаксис:
delete указатель_на_объект;
delete [ ] указатель_на_массив_объектов;
Первая форма используется, если операцией new размещался единичный (скалярный) объект. Векторная форма используется, если операцией new создан массив объектов, при удалении которого для каждого из объектов необходим вызов деструктора (деструкторы описываются далее). Такими объектами являются объекты пользовательского типа.
Практическое изучение первого принципа ООП – механизма инкапсуляции
Подготовка к лабораторной работе № 1
Программирование точечных конфигураций на плоскости
В первой лабораторной работе используются абстрактные типы данных (АТД). АТД являются математическим понятием, пригодным на этапе подготовки спецификации – в процессе анализа. Понятие класса, предусматривая частичную или полную реализацию, обеспечивает необходимую связь с разработкой ПО на этапах проектирования и программирования. Класс называется эффективным, если его реализация полна, и отложенным - при частичной реализации. Рассмотрим два типовых задания.
|
Вычисление декартовых координат вершин правильного треугольника
Разработать ООП для вычисления декартовых координат вершин правильного треугольника с заданной длиной стороны, центр которого лежит на оси Х (рисунок 1). Длина стороны треугольника должна передаваться программе через аргумент командной строки, а полученные координаты должны отображаться через стандартный вывод. Программная реализация вычислений должна быть основана на разработке класса точки с приватными полями ее декартовых координат и публичными методами доступа к ним и конструктором инициализации их значений. Кроме того нужно предусмотреть статический метод конструирования точки по ее полярным координатам (программа polar.cc).
Рисунок 1 – К постановке задачи вычисления декартовых координат правильного треугольника
// Программа polar.cc
#include <stdlib.h>
#include <math.h>
#include <iostream.h>
// Класс Point2 точки плоскости
class Point2 {
private:
float x;
float y;
Point2(float _x, float _y): x(_x), y(_y) { };// приватный конструктор
public:
float getx() { return x; }; // доступ к x
float gety() { return y; }; // доступ к ystatic Point2 Polar(float, float); // именованный конструктор точки - статический метод
Point2() { x=y=0.0; }; // конструктор по умолчанию (для массива точек)
}; // Point2
// конструирование точки по полярным координатам
inline Point2 Point2:: Polar(float R, float F) {
Point2 p(R*cos(F), R*sin(F)); // перевод полярных координат в декартовы
return p; // возврат объекта класса точки
}; //polar
// основная функция
int main(int argc, char* argv[ ]) {
float edge = 1.0; // сторона треугольника (1.0 – длина по умолчанию)
float angle = 0.0; // полярный угол вершины
float pi; // число pi
pi = acos (-1.0); // вычислить pi (можно M_PI из math.h)
float radius; // радиус-вектор вершины
int i = 0; // счетчик вершин треугольника
Point2 vertex [3]; // массив вершин треугольника vertex[0], vertex[1], vertex[2]
if(argc > 1)
edge = atof (argv[1]);// получить длину стороны из командной строки
cout << "pi=" << pi << endl;
radius = edge / (2*sin(pi/3.0)); // радиус описанной окружности
while (i<3) { // цикл вычисления декартовых координат вершин
vertex[ i ] = Point2::Polar(radius, angle);
|
angle += ((4.0*pi)/3.0); // +120 градусов =4* pi/3
i++;
}// while
do { // Печать декартовых координат вершин в обратном порядке
--i;
cout << vertex[ i ].getx() << ';' << vertex[ i ].gety() << endl;
} while(i > 0); //do- while
return (0); // Корректное завершение программы
}// main
|
|
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!