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

 

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

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

Кафедра АТ










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

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

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

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



Выполнил

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

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








Донецк 2011

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


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

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

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

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

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

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

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

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

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

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


СОДЕРЖАНИЕ


СОДЕРЖАНИЕ

ВВЕДЕНИЕ

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

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

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

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

.БЛОК-СХЕМЫ

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

ВЫВОДЫ

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

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

ВВЕДЕНИЕ


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

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

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

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


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


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

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

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

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

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

Операции:

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

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

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

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

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


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

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


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

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


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

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


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


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

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

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

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

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


Приложение А


#include<string.h>

#include<stdio.h>

#include<conio.h>

#include<iostream.h>

#include<math.h>

#include<fstream.h>

complex{a,real,imagine,j;:(int k){=k;=k;=k;=k;}

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"<<<<"+j("<<imagine<<")"<<endl<<

"\nTrigonometricheskaya forma:\n"<<

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

"\nPokazatelnaya forma:\n"<<<<"*e^j*("<<j<<")"<<endl;

f.close();

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

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

}

(){<<"Vyberite formu komplexnogo chisla:\n"<<

"Algebr - 1\n"<<

"Trigonometr - 2\n"<<

"Pokazatelnaya - 3\n";

char key;=getch();(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;}

}

}

_alg(){

<<"Algebraicheskaya forma:\n"<<<<"+j("<<imagine<<")"<<endl; }_trig(){<<"\nTrigonometricheskaya forma:\n"<<<<"*cos("<<j<<")+j*"<<a<<"*sin("<<j<<")"<<endl;}_pok(){<<"\nPokazatelnaya forma:\n"<<<<"*e^j*("<<j<<")"<<endl;}


&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;}


};

main(){clrscr();

:(YELLOW);();<<"\t\t\tMENU\n"<<

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

"Kalkulator - press 2\n"<<

"Exit - press 3\n";s;=getch();(s){'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;}'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;}

}

}'3':{clrscr();

cout<<"Rabota zavershena!\n";

getch(); }

}

}

Реферат


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

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

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

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


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра АТ Пояснительная зап

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ