Комплексные числа. Методы вычисления модуля и аргумента (Лабораторная работа № 1)

Страницы работы

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное агентство по образованию 

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ

 ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Учебный Центр Информационных Технологий «Информатика»

Лабораторная работа №1

по дисциплине «Объектно-ориентированное программирование»

Направление подготовки: 230105 - «Программное обеспечение вычислительной техники и автоматизированных систем»

Выполнил слушатель:

Вариант: 9

Дата сдачи: __/__/____

Преподаватель:

Новосибирск, 2016г.


Лабораторная работа № 1. Разработка класса.

1.  Цель работы: научиться проектировать и реализовывать классы, соответственно поставленной задаче. Освоить на практике базовые понятия и механизмы ООП.

2.  Вариант № 9.  Комплексные числа.

Объект класса хранит действительную и мнимую часть комплексного числа. Предусмотреть методы вычисления модуля и аргумента.

3.  Описание программной реализации.

Проект скомпилирован в среде Microsoft VS и содержит три файла: интерфейс класса Complex.h, реализация методов класса Complex.cpp, и файл main.cpp.

Используемые функции:

—  intmenu(Complex** &, int &) – блок программы, содержащий интерфейс пользователя и функции вывода таблицы введённых данных.

—  void grow(Complex** &, int &) — функция, производящая динамическое увеличение массива элементов.

—  void createObj(Complex** &, int &, int number=0) – создание объекта.

—  voidcreateCopy(Complex** &, int &, int) — создание объекта как копии выбранного элемента.

—  void showTable(Complex** &, int) — вывод содержимого массива в виде таблицы.

—  void deleteAll(Complex** &, int) — удаление динамического массива и всех созданных объектов класса.

Методы класса Complex:

—  Complex() конструктор по умолчанию.

—  Complex(int, int) — конструктор с параметрами.

—  Complex(Complex &) – конструктор копий.

—  ~Complex() — деструктор.

—  staticint getCounter() — возвращает значение счётчика объектов.

—  void edit() — редактирование объекта.

—  staticvoiddel(Complex* &) — удаление выбранного объекта.

—  voidshowObject() — вывод объекта.

—  doublemod() — модуль комплексного числа.

—  doublearg() — аргумент комплексного числа.

4.  Вывод

В ходе выполнения лабораторной работы я научился проектировать и реализовывать классы, освоил базовые понятия и механизмы ООП: закрытые и открытые члены класса, перегрузка конструкторов, список инициализации, статические члены класса, динамическое выделение памяти, потоковый ввод/вывод.

5.  Пример работы программы.

При запуске пользователю предлагается ввести количество элементов массива.

После чего отображается пустая таблица элементов массива и меню пользователя.

При заполнении элементов таблицы пользователю предлагается выполнить соответствующие действия с её элементами:

·  Быстрая вставка элемента с параметрами по умолчанию

·  Изменение выбранного элемента путём ввода действительной и мнимой частей комплексного числа

·  Копирование выбранного элемента

·  Удаление выбранного элемента

При выходе из программы происходит удаление всех элементов динамического массива и освобождается память.

6.  Приложение. Текст программы

Complex.h:

#pragma once

#include <iostream>

#include <conio.h>

#include <math.h>

#include <Windows.h>

#include <locale>

using namespace std;

class Complex

{

static double const pi ;

static int counter;

double real, image;

public:

Complex();

Complex(int, int);

Complex(Complex &);

~Complex();

static int getCounter();

void edit();

static void del(Complex* &);

void showObject();

double mod();

double arg();

};

Complex.cpp:

#include "comPlex.h"

int Complex::counter;

double const Complex::pi = 3.1415926536;

Complex::Complex(): real(0), image(0)                      // конструктор по умолчанию

{

++counter;

}

Complex::Complex(int re, int im): real(re), image(im)      // конструктор с параметрами

{

++counter;

}

Complex::Complex(Complex &obj): real(obj.real), image(obj.image) // конструктор копирования

{

++counter;

}

Complex::~Complex()                                        // деструктор

{

--counter;

}

int Complex::getCounter()                                  // возврат счётчика

{

return counter;

}

void Complex::edit()                                       // редактирование объекта

{

cout<<endl<<"Введите действительную часть Z: real= "<<endl;

cin>>real;

cout<<"Введите мнимую часть Z: image= "<<endl;

cin>>image;

return;

}

void Complex::del(Complex* &obj)                            // удаление объекта

{

if (obj!=NULL)

{

delete obj;

obj = NULL;

}

return;

}

void Complex::showObject()                                  // вывод объектов

{

cout<<"Z="<<real<<"+"<<image<<"*i"<<"\t"<<"|Z|="<<mod()<<"\t";

if (arg()!=0)

cout<<"arg Z="<<arg()*180/pi<<"\t"<<endl;

else

cout<<"n/a"<<endl;

return;

}

double Complex::mod()                                       // модуль

{

return sqrt(real*real+image*image);

}

double Complex::arg()                                       // аргумент

{

if (real>0) return atan(image/real);

if (real<0)

{

if (image>0) return pi+atan(image/real);

if (image<0) return -pi+atan(image/real);

if (image==0) return pi;

}

if (real==0)

{

if (image>0) return pi/2;

if (image<0) return -pi/2;

}

return 0;

}

main.cpp:

#include "comPlex.h"

#define ESC         27

Похожие материалы

Информация о работе