Разработка калькуляторов. Комплексные числа в алгебраической, тригонометрической и экспоненциальной формах

Выполнение действий сложения, вычитания, умножения, деления, возведения в целую степень, извлечения квадратного корня по формуле Муавра и преобразования из одной формы в другую при помощи программы, разработанной на языке программирования С++.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 16.01.2012
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра АТ

Пояснительная записка

к курсовой работе по дисциплине

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

на тему: «Разработка калькуляторов. Комплексные числа в алгебраической, тригонометрической и экспоненциальной формах.»

Выполнил

ст.гр. ТКС-10а Бесклетка Д.П.

Руководитель Яремко И. Н.

Донецк 2011

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

Курсовая работа по курсу ""Объектно-ориентированное программирование" выполняется индивидуально каждым студентом в соответствии с выданным преподавателем вариантом. Обязательным является использование в курсовой работе объектно-ориентированного подхода и пользовательских классов.

В процессе работы автор должен

1. Выполнить анализ предметной области.

2. Разработать пользовательские классы.

3. Разработать алгоритмы, реализующие компонентные функции классов и перегруженные операции.

4. Разработать пользовательский интерфейс для ввода и получения информации.

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

6. Провести отладку и тестирование программы.

7. Оформить для нее документацию.

Все этапы работы должны быть отражены в пояснительной записке.

СОДЕРЖАНИЕ

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ПОСТАНОВКА ЗАДАЧИ

Сложение, вычитание, умножение, деление, возведение в целую степень, извлечение квадратного корня (по формуле Муавра), преобразование из одной формы в другую

2. ВЫБОР ЯЗЫКА ПРОГРАММИРОВАНИЯ

3. ОПИСАНИЕ КЛАССОВ

4.БЛОК-СХЕМЫ

5.ОПИСАНИЕ И ТЕСТИРОВАНИЕ РАБОТЫ ПРОГРАММЫ

ВЫВОДЫ

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

Приложение А.

ВВЕДЕНИЕ

Курсовая работа предназначена для отработки навыков программирования задач средней сложности у студентов дневного и заочного отделения специальности «Телекоммуникационные системы и сети»

Целью курсовой работы является закрепление и углубление знаний, полученных в курсе "Объектно-ориентированное программирование", развитие навыков при выборе представления исходных данных, использовании объектно-ориентированного подхода при написании программ на языке С++, тестировании и отладки программы, оформлении документации на программную разработку.

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

В ходе работы калькулятора используются компоненты-функции и операции. Взаимодействие с пользователем осуществляется с помощью текстового интерфейса.

1. ПОСТАНОВКА ЗАДАЧИ

Разработать класс «Калькулятор», выполняющий указанные в варианте операции для заданных исходных данных. Программа должна выполнять ввод данных, проверку правильности введенных данных, выдачу соответствующих сообщений в случае возникновения ошибок.

Протокол работы калькулятора записать в файл. Протокол должен включать исходные данные, введенные пользователем, выполняемые операции и результаты их выполнения. В случае возникновения ошибки в файл записывается соответствующее сообщение.

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

Индивидуальное задание:

Комплексные числа в алгебраической, тригонометрической и экспоненциальной формах.

Операции:

Сложение, вычитание, умножение, деление, возведение в целую степень, извлечение квадратного корня (по формуле Муавра), преобразование из одной формы в другую

2. ВЫБОР ЯЗЫКА ПРОГРАММИРОВАНИЯ

программа язык сложение муавр

С++ является языком программирования общего назначения. Естественная для него область применения - системное программирование, понимаемое в широком смысле этого слова. Кроме того,

С++ успешно используется во многих областях приложения, далеко выходящих за указанные рамки. Реализации С++ теперь есть на всех машинах, начиная с самых скромных микрокомпьютеров - до самых больших супер-ЭВМ, и практически для всех операционных систем. Поэтому книга дает лишь описание собственно языка, не объясняя особенности конкретных реализаций, среды.

C++ -- компилируемый статически типизированный язык программирования общего назначения. Поддерживая разные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником -- языком C, -- наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает операционные системы, прикладные программы, драйверы устройств, приложения для встраиваемых систем, высокопроизводительные серверы, а также развлекательные приложения, например, видеоигры. Существует несколько реализаций языка, как бесплатных, так и коммерческих. Их производят GNU Project, Microsoft, Intel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на C# и Java.

При создании C++ стремились сохранить совместимость с языком C. Большинство программ на C будут исправно работать и с компилятором C++. C++ имеет синтаксис, основанный на синтаксисе C.

3. ОПИСАНИЕ КЛАССОВ

В данной курсовой работе разработан 1 класс:

Класс complex:

В данном классе содержатся данные о комплексном числе: его действительная и мнимая части в алгебраической форме записи, модуль и величина угла в показательной форме записи.

Real - действительная часть

Imagine - мнимая часть

A - модуль

J - угол

сomplex() - конструктор. Выбирается форма комплексного числа и производится ввод.

~ complex() - деструктор. Используется для удаления памяти, выделенной под комплексное число в конструкторе.

Функции:

- show_alg- вывод текущего числа в алгебраической форме.

- show_ trig - вывод текущего числа в тригонометрической форме.

- show_ pok - вывод текущего числа в показательной форме.

- stepen, muavr- функции возведения в квадрат и квадратного корня комплексного числа.

- void file - служит для записи данных в файл

4.БЛОК-СХЕМЫ

Блок-схема конструктора класса complex.

Блок-схема функции вывода числа в алгебраической форме.

Блок-схема функции вывода числа в тригонометрической форме.

Блок-схема функции вывода числа в показательной форме.

Блок-схема перегрузки оператора =

Блок-схема перегрузки оператора +

Блок-схема перегрузки оператора -

Блок-схема перегрузки оператора *

Блок-схема перегрузки оператора /

1 2

1.Блок-схема функции возведения в степень комплексного числа.

2.Блок-схема функции квадратного корня комплексного числа.

Блок-схема основной программы.

5.ОПИСАНИЕ И ТЕСТИРОВАНИЕ РАБОТЫ ПРОГРАММЫ

При запуске программы мы видим следующее (рисунок 1):

программа предлагает пользователю выбрать операцию.

Рисунок 1 - начало работы программы.

При выборе перевода из одной формы в другую программа предлагает нам выбрать исходную форму комплексного числа (рис.2):

Рисунок 2 - выбор формы числа.

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

Рисунок 3 - Ввод данных.

Затем выбирается форма записи, в которой пользователь хочет представить комплексное число (рис 4).

Рисунок 4 - выбор формы записи.

После этого выводятся результаты перевода (рис. 5).

Рисунок 5 - вывод результата.

Затем программа переходит в предыдущее меню (рис.4), позволяющее изменить форму комплексного числа или выйти в главное меню.

Выбрав пункт 4 программа возвращается в главное меню.

Выбрав в главном меню 2, откроется калькулятор комплексных чисел (рис.6).

Рисунок 6 - меню калькулятора.

Первый пункт меню программы это - сложение. После выбора этого пункта.

Второй - разность.

Третий - произведение.

Четвертый - деление.

Пятый - возведение в целую степень.

Шестой - квадратный корень по формуле Муавра.

При выборе пункта 1-6 программа запросит форму двух комплексных чисел и ввод числа в соответствующей форме (рис. 7, 8).

Рисунок 7 - выбор формы комплексного числа

Рисунок 9 - ввод комплексных чисел

Затем программа произведет расчет функции и вывод результата во всех трех формах записи (рис 9).

При выполнении любой бинарной функции пользователю предлагается сохранить данные в файл, имя которого вводится с клавиатуры (рис 10).

Выбрав пункт 7, программа возвращается в предыдущее меню.

Третий пункт меню программы это - выход. После выбора этого пункта с помощью деструктора очищается память и программа завершает свою работу.

ВЫВОДЫ

В данной курсовой работе был осуществлен анализ работы калькулятора. Разработаны классы и методы, необходимые для работы программы, разработан интерфейс пользователя. Программа написана на языке С++, exe-файл имеет объем 5 147 байт.

Данная программа носит учебный характер, в связи с этим есть возможности совершенствования, как интерфейса, так и расширения возможностей программы путём добавления новых видов данных и операций над ними.

Разработка программы дала возможность понять преимущества объектно-ориентированного программирования, которое помогает упростить написание и выполнение задач подобного типа, позволяет повысить скорость работы программы.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Павловская Т.А.«С/С++. «Программирование на языке высокого уровня», СПб.-2007

2. Павловская Т.А., Щупак Ю.А. «С/С++. Структурное программирование: Практикум», СПб.-2003

3. Прата С. «Язык программирования С++» Культин, «С++ в задачах и примерах»

4. Страуструп Б. «Язык программирования Си++» Пер. с англ. - М.: Радио и связь, 1991.-352с.

5. Вирт Н. «Алгоритмы + структуры данных = программы» . - М. : Мир, 1985. - 406 с.

Приложение А

#include<string.h>

#include<stdio.h>

#include<conio.h>

#include<iostream.h>

#include<math.h>

#include<fstream.h>

class complex{

double a,real,imagine,j;

public:

complex(int k){

a=k;

real=k;

imagine=k;

j=k;}

void file(char s1[20],char s2[20])

{char q[40];

ofstream f;

strcpy(q,s2);

f.open(q,ios::out);

if(s1[0]!='0')

f<<s1<<endl;

f<<"Algebraicheskaya forma:\n"<<

real<<"+j("<<imagine<<")"<<endl<<

"\nTrigonometricheskaya forma:\n"<<

a<<"*cos("<<j<<")+j*"<<a<<"*sin("<<j<<")"<<

"\nPokazatelnaya forma:\n"<<

a<<"*e^j*("<<j<<")"<<endl;

f.close();

cout<<"\nFail sohranen v "<<q<<"";

cout<<"\nNazhmite lubuyu klavishu dlya prodolzheniya!";

}

complex(){

cout<<"Vyberite formu komplexnogo chisla:\n"<<

"Algebr - 1\n"<<

"Trigonometr - 2\n"<<

"Pokazatelnaya - 3\n";

char key;

key=getch();

switch(key){

case'1':{clrscr();

cout<<"Vvedite dejstvitelnuy chast': ";

cin>>real;

cout<<"Vvedite mnimuy chast': ";

cin>>imagine;

a=ceil(sqrt(real*real+imagine*imagine)*100)/100;

j=ceil((atan(imagine/real)*100)*57.3)/100;break;}

case'2':{clrscr();

cout<<"Vvedite ugol: ";

cin>>j;

cout<<"Vvedite A: ";

cin>>a;

real=ceil(cos(j/57.3)*a*100)/100;

imagine=ceil(sin(j/57.3)*a*100)/100;break;}

case'3':{clrscr();

cout<<"Vvedite stepen' (j): ";

cin>>j;

cout<<"Vvedite A: ";

cin>>a;

real=ceil(cos(j/57.3)*a*100)/100;

imagine=ceil(sin(j/57.3)*a*100)/100;break;}

}

}

show_alg(){

cout<<"Algebraicheskaya forma:\n"<<

real<<"+j("<<imagine<<")"<<endl; }

show_trig(){

cout<<"\nTrigonometricheskaya forma:\n"<<

a<<"*cos("<<j<<")+j*"<<a<<"*sin("<<j<<")"<<endl;}

show_pok(){

cout<<"\nPokazatelnaya forma:\n"<<

a<<"*e^j*("<<j<<")"<<endl;}

complex&complex::operator=(complex&M)

{

a=M.a;

real=M.real;

imagine=M.imagine;

j=M.j;

return *this;

}

complex complex::operator+(complex M)

{complex temp(0);

temp.real=real+M.real;

temp.imagine=imagine+M.imagine;

temp.a=ceil(sqrt(temp.real*temp.real+temp.imagine*temp.imagine)*100)/100;

temp.j=ceil((atan(temp.imagine/temp.real)*100)*57.3)/100;

return temp;

}

complex complex::operator-(complex M)

{complex temp(0);

temp.real=real-M.real;

temp.imagine=imagine-M.imagine;

temp.a=ceil(sqrt(temp.real*temp.real+temp.imagine*temp.imagine)*100)/100;

temp.j=ceil((atan(temp.imagine/temp.real)*100)*57.3)/100;

return temp;

}

complex complex::operator*(complex M)

{complex temp(0);

temp.a=a*M.a;

temp.j=j+M.j;

temp.real=ceil(cos(temp.j)*temp.a*100)/100;

temp.imagine=ceil(sin(temp.j)*temp.a*100)/100;

return temp;

}

complex complex::operator/(complex M)

{complex temp(0);

temp.a=a/M.a;

temp.j=j-M.j;

temp.real=ceil(cos(temp.j)*temp.a*100)/100;

temp.imagine=ceil(sin(temp.j)*temp.a*100)/100;

return temp;

}

stepen(){

cout<<"Vvedite stepen': ";

int k;

cin>>k;

a=pow(a,k);

j=j*k;

real=ceil(cos(j/57.3)*a*100)/100;

imagine=ceil(sin(j/57.3)*a*100)/100; }

muavr(){j=j/2;}

};

void main(){clrscr();

m1:

textcolor(YELLOW);

clrscr();

cout<<"\t\t\tMENU\n"<<

"Perevod iz odnoj formy v druguy - press 1\n"<<

"Kalkulator - press 2\n"<<

"Exit - press 3\n";

char s;

s=getch();

switch(s){

case'1':{textcolor(CYAN);

clrscr();

complex a;

m2:

clrscr();

cout<<"Viberite formu, v kot neobh. perevesti:\n"<<

"Algebr - 1\n"<<

"Pokazatelnaya - 2\n"<<

"Trigonometr - 3\n"<<

"V predydushee menu - 4\n";

char s1;

s1=getch();

switch(s1){

case'1':{clrscr();a.show_alg();getch();goto m2;}

case'2':{clrscr();a.show_pok();getch();goto m2;}

case'3':{clrscr();a.show_trig();getch();goto m2;}

case'4':{clrscr();goto m1;}}

goto m1;}

case'2':{clrscr();

m3:

textcolor(GREEN);

clrscr();

cout<<"Viberite dejstvie:\n"<<

"Slogenie - 1\n"<<

"Vychitanie - 2\n"<<

"Proizvedenie - 3\n"<<

"Delenie - 4\n"<<

"Vozvedenie v celuy stepen'- 5\n"<<

"Kv. koren' po formule MUAVRA - 6\n"<<

"V predydushee menu - 7\n";

char s2;

s2=getch();

switch(s2){

case'1':{clrscr();

cout<<"1 chislo:\n";

complex b;

clrscr();

cout<<"2 chislo:\n";

complex c;

complex s(0);

s=b+c;

clrscr();

s.show_alg();

s.show_pok();

s.show_trig();

cout<<"\n\nHotite sohranit' rezultat v fail?"<<

"\n1 - da\n2 - net\n";

int r;

cin>>r;

if(r==1){

cout<<"kuda sohranit' fail?\n";

char put[20];

cin>>put;

s.file("Rezult of summa\n",put); }

getch();

goto m3;}

case'2':{clrscr();

cout<<"1 chislo:\n";

complex b;

clrscr();

cout<<"2 chislo:\n";

complex c;

complex s(0);

s=b-c;

clrscr();

s.show_alg();

s.show_pok();

s.show_trig();

cout<<"\n\nHotite sohranit' rezultat v fail?"<<

"\n1 - da\n2 - net\n";

int r;

cin>>r;

if(r==1){

cout<<"kuda sohranit' fail?\n";

char put[20];

cin>>put;

s.file("Rezult of raznost'\n",put); }

getch();

goto m3;}

case'3':{clrscr();

cout<<"1 chislo:\n";

complex b;

clrscr();

cout<<"2 chislo:\n";

complex c;

complex s(0);

s=b*c;

clrscr();

s.show_alg();

s.show_pok();

s.show_trig();

cout<<"\n\nHotite sohranit' rezultat v fail?"<<

"\n1 - da\n2 - net\n";

int r;

cin>>r;

if(r==1){

cout<<"kuda sohranit' fail?\n";

char put[20];

cin>>put;

s.file("Rezult of proizvedenie\n",put); }

getch();

goto m3;}

case'4':{clrscr();

cout<<"1 chislo:\n";

complex b;

clrscr();

cout<<"2 chislo:\n";

complex c;

complex s(0);

s=b/c;

clrscr();

s.show_alg();

s.show_pok();

s.show_trig();

cout<<"\n\nHotite sohranit' rezultat v fail?"<<

"\n1 - da\n2 - net\n";

int r;

cin>>r;

if(r==1){

cout<<"kuda sohranit' fail?\n";

char put[20];

cin>>put;

s.file("Rezult of delenie\n",put); }

getch();

goto m3;}

case'5':{clrscr();

complex b;

clrscr();

b.stepen();

clrscr();

b.show_alg();

b.show_pok();

b.show_trig();

getch();

goto m3;}

case'6':{clrscr();

complex b;

clrscr();

b.muavr();

clrscr();

cout<<"Kv. koren' po Muavra:\n";

b.show_trig();

getch();

goto m3;}

case'7':{clrscr();goto m1;}

}

}

case'3':{clrscr();

cout<<"Rabota zavershena!\n";

getch(); }

}

}

Реферат

Пояснительная записка к курсовой работе содержит 32 страниц. При работе было использовано 5 источникрв литературы. Имеется 11 рисунков, 1 приложения.

Цель работы - закрепление и углубление знаний, полученных студентами в курсе "Объектно-ориентированное программирование", развитие навыков при выборе представления исходных данных, использовании объектно-ориентированного подхода при написании программ на языке С++, тестировании и отладки программы, оформлении документации на программную разработку.

Ключевые слова:

КАЛЬКУЛЯТОР, КОМПЛЕКСНОЕ ЧИСЛО, АРИФМЕТИЧЕСКИЕ ДЕЙСТВИЯ, ФУНКЦИИ, ОПЕРАЦИИ, ФАЙЛЫ.

Размещено на Allbest.ru


Подобные документы

  • Основные типы модулей, использующиеся в среде программирования Delphi 6. Концепция объектно-ориентированного программирования. Разработка эскизного и технического проектов программы. Алгоритм выполнения операций сложения, вычитания и умножения матриц.

    курсовая работа [559,1 K], добавлен 03.01.2011

  • Анализ технического задания. Разработка программы по вычислению функции на языке ассемблер для микропроцессора Кр580ВМ80. Алгоритмы программного умножения, деления, сложения, вычитания и сдвига влево многобайтных чисел. Расчет времени работы программы.

    курсовая работа [88,2 K], добавлен 19.09.2012

  • Представление полиномов в виде кольцевых списков и выполнение базовых арифметических действий над ними. Реализация алгоритмов сложения, умножения и вычитания полиномов класса List на языке программирования Python 2.7. в интегрированной среде Python IDLE.

    курсовая работа [228,1 K], добавлен 11.01.2012

  • Понятие двоично-десятичного кода (ДДК), его получение и использование. Изучение арифметико-логических устройств, использующихся для обработки ДДК. Алгоритмы сложения, вычитания, умножения и деления ДДК при помощи арифметико-логических устройств.

    контрольная работа [145,5 K], добавлен 05.09.2010

  • Алгоритм выполнения операции сложения, вычитания. Сложение чисел в столбик. Проверка получившихся результатов, переведение их в другую систему счисления. Перевод числа 128 из 8-й в 10-ую систему счисления и числа 11011101 из 2-й в 10-ую систему счисления.

    практическая работа [13,9 K], добавлен 18.04.2011

  • Тестирование арифметико-логического блока процессора на уровне двоичных форм представления данных типовыми программными средствами ЭВМ. Рассмотрение основ сложения и вычитания чисел с плавающей запятой. Описание логического и текстового типа данных.

    курсовая работа [1,4 M], добавлен 13.12.2014

  • Особенности разработки программы и выбор методов решения задачи. Составление алгоритма, распределение регистров программы и формирование файлов. Описание процедуры очистки памяти, сложения, вычитания, умножения. Тестирование и листинг программы.

    лабораторная работа [51,2 K], добавлен 14.05.2011

  • Разработка программы для расчета корня уравнения в определенном отрезке, по количеству итераций. Рисование в окне консоли на языке программирования C++. Реализация вывода графика функции и корня уравнения. Математическая модель и алгоритм решаемой задачи.

    курсовая работа [521,3 K], добавлен 09.07.2017

  • Выполнение операции деления в ЭВМ. Умножение чисел, представленных в форме с плавающей запятой. Методы ускорения операции умножения. Матричный метод умножения. Деление чисел в машинах с плавающей запятой. Деление чисел с восстановлением остатков.

    реферат [49,4 K], добавлен 18.01.2011

  • Составление процедуры для матрицы, разложения матрицы на множители, решения системы линейных уравнений, нахождения определителя матрицы и матрицы с транспонированием. Суть метода квадратного корня. Разложение матрицы на множители. Листинг программы.

    лабораторная работа [39,4 K], добавлен 18.09.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.