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