Программирование на языках высокого уровня

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 27.05.2013
Размер файла 19,9 K

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

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

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

Программирование на языках высокого уровня

Задание

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

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

3) Предусмотреть возможность просмотра этого файла из программы калькулятора.

В варианте указаны вид данных, обрабатываемых калькулятором, и операции, выполняемые калькулятором.

Вид данных:

Углы, измеряемые в градусной системе мер (1 градус=60 минут, 1 минута=60 секунд).

Операции:

Сложение, вычитание, умножение, деление, нахождение тригонометрических и обратных тригонометрических функций, изменение знака угла.

Описание классов

Класс Gradus - главный пользовательский класс программы. Представляет собой 3 значения типа integer. Соответственно градусы, минуты и секунды. В классе есть перегруженные операции присваивания, арифметических действий, операции ввода / вывода, деструктор и конструкторы. В конце каждой операции происходит занесение операндов и результата в файл log.txt.

Класс Error - класс, позволяющий выводить на экран сведения об ошибках с помощью throw. В программе реализован вывод ошибки в двух случаях:

- Если пользователь вводит отличные от integer значения градусов, минут, секунд

- Если пользователь, при выполнении операции деления, делит на 0

Класс Dialog - класс, состоящий из одной функции menu, осуществляющей диалог с пользователем посредством конструкции case. Также внутри этой функции происходит вычисление тригонометрических операций и смена знака угла. Здесь же вывод информации из файла log.txt на экран и операция для его очистки.

Листинг программы

Gradus.h:

#pragma once

#include <iostream>

#include «Math.h»

#include <cmath>

#include <fstream>

#include <string>

using namespace std;

class Gradus

{

public:

int grad;

int min;

int sec;

Gradus() {grad=0; min=0; sec=0;};

Gradus (int g, int m, int s) {grad=g; min=m; sec=s;};

Gradus (const Gradus&g) {grad=g.grad; min=g.min; sec=g.sec;};

~Gradus(){};

int get_grad() {return grad;}

int get_min() {return min;}

int get_sec() {return sec;}

void set_grad (int g) {grad=g;}

void set_min (int m) {min=m;}

void set_sec (int s) {sec=s;}

// перегруженные операции

Gradus&operator=(const Gradus&);

Gradus& Gradus:operator+(const Gradus&l);

Gradus& Gradus:operator - (const Gradus&l);

Gradus& Gradus:operator/(const Gradus&l);

Gradus& Gradus:operator*(const Gradus&l);

// глобальные функции ввода-вывода

friend std:istream& operator >> (std:istream &in, Gradus &g);

friend std:ostream& operator << (std:ostream &out, const Gradus &g);

};

Gradus.cpp:

#include «Gradus.h»

#include <iostream>

#include «Math.h»

#include <cmath>

#include <fstream>

#include <string>

#include «Error.h»

using namespace std;

// -

// перегрузка операции присваивания

Gradus&Gradus:operator=(const Gradus&g)

{

// проверка на самоприсваивание

if (&g==this) return *this;

grad=g.grad;

min=g.min;

sec=g.sec;

return *this;

}

// -

// перегрузка глобальной функции-операции ввода

std:istream& operator >> (std:istream &in, Gradus &g)

{

cout<< «Vvedite gradusi:»; in>>g.grad;

if (! cin)

{throw error (» ERROR! Vvodite znacheniya integer!»);};

cout<< «Vvedite minuti:»; in>>g.min;

cout<< «Vvedite secundi:»; in>>g.sec;

while (g.sec>=60)

{g.min=g.min+1;

g.sec=g.sec-60;

}

while (g.min>=60)

{g.grad=g.grad+1;

g.min=g.min-60;

}

while (g.grad>=360)

{g.grad = g.grad-360;

}

return in;

}

// -

// перегрузка глобальной функции-операции вывода

std:ostream& operator << (std:ostream &out, const Gradus &g)

{

return (out<<g.grad<<»\xF8 «<<g.min<<«' «<<g.sec<<» ''»);

}

// -

// перегрузка операции сложения

Gradus& Gradus:operator+(const Gradus&l)

{

Gradus a, b;

cout<< «SLOZHENIE GRADUSOV: «<<endl;

cout<<«Vvedite 1 Slagaemoe': «<<endl;

cin >> a;

cout<<«Vvedite 2 Slagaemoe': «<<endl;

cin >> b;

Gradus result;

result.grad = (a.grad+b.grad);

result.min = (a.min+b.min);

result.sec = (a.sec+b.sec);

while (result.sec>60)

{result.min=result.min+1;

result.sec=result.sec-60;

}

while (result.min>60)

{result.grad=result.grad+1;

result.min=result.min-60;

}

while (result.grad>360)

{result.grad = result.grad-360;

}

cout <<endl<<«OTVET: «<< result.grad<<»\xF8 «<<result.min<<» ' «<<result.sec<<» '' «<<endl;

// запись в лог

ofstream f;

f.open («log.txt», ios:app);

f<< «Operacia slozhenia \n»;

f<<«Slagaemoe 1: «<<a<<endl;

f<<«Slagaemoe 2: «<<b<<endl;

f<<«Resultat: «<< result.grad<<»\xF8 «<<result.min<<» ' «<<result.sec<<» '' «<<endl<<endl;

f.close();

return result;

}

// -

// перегрузка операции вычитания

Gradus& Gradus:operator - (const Gradus&l)

{

Gradus a, b;

cout<< «VICHITANIE GRADUSOV: «<<endl;

cout<<«Vvedite UMENSHAEMOE': «<<endl;

cin >> a;

cout<<«Vvedite VICHITAEMOE': «<<endl;

cin >> b;

Gradus result;

result.grad = (a.grad-b.grad);

result.min = (a.min-b.min);

result.sec = (a.sec-b.sec);

while (result.sec>60)

{result.min=result.min+1;

result.sec=result.sec-60;

}

while (result.min>60)

{result.grad=result.grad+1;

result.min=result.min-60;

}

while (result.sec<0)

{result.min = result.min-1;

result.sec = result.sec+60;

}

while (result.min<0)

{result.grad=result.grad-1;

result.min=result.min+60;

}

while (result.grad>360)

{result.grad = result.grad-360;

}

while (result.grad<0)

{result.grad = result.grad+360;

}

cout <<endl<<«OTVET: «<< result.grad<<»\xF8 «<<result.min<<» ' «<<result.sec<<» '' «<<endl;

// запись в лог

ofstream f;

f.open («log.txt», ios:app);

f<< «Operacia vichitaniya \n»;

f<<«Umenshaemoe: «<<a<<endl;

f<<«Vichitaemoe: «<<b<<endl;

f<<«Resultat: «<< result.grad<<»\xF8 «<<result.min<<» ' «<<result.sec<<» '' «<<endl<<endl;

f.close();

return result;

}

// -

// перегрузка операции деления

Gradus& Gradus:operator/(const Gradus&l)

{

Gradus a, b;

cout<< «DELENIE GRADUSOV: «<<endl;

cout<<«Vvedite DELIMOE': «<<endl;

cin >> a;

cout<<«Vvedite DELITEL': «<<endl;

cin >> b;

if (b.grad==0)

{throw error (» ERROR! Delitel.gradusi == 0!»);};

if (b.min==0)

{throw error (» ERROR! Delitel.minuti == 0!»);};

if (b.sec==0)

{throw error (» ERROR! Delitel.secundi == 0!»);};

{throw error (» ERROR! Delitel == 0!»);};

Gradus result;

result.grad = (a.grad/b.grad);

result.min = (a.min/b.min);

result.sec = (a.sec/b.sec);

while (result.sec>60)

{result.min=result.min+1;

result.sec=result.sec-60;

}

while (result.min>60)

{result.grad=result.grad+1;

result.min=result.min-60;

}

while (result.sec<0)

{result.min = result.min-1;

result.sec = result.sec+60;

}

while (result.min<0)

{result.grad=result.grad-1;

result.min=result.min+60;

}

while (result.grad>360)

{result.grad = result.grad-360;

}

cout <<endl<<«OTVET: «<< result.grad<<»\xF8 «<<result.min<<» ' «<<result.sec<<» '' «<<endl;

// запись в лог

ofstream f;

f.open («log.txt», ios:app);

f<< «Operacia deleniya \n»;

f<<«Delimoe: «<<a<<endl;

f<<«Delitel: «<<b<<endl;

f<<«Resultat: «<< result.grad<<»\xF8 «<<result.min<<» ' «<<result.sec<<» '' «<<endl<<endl;

f.close();

return result;

}

// -

// перегрузка операции умножения

Gradus& Gradus:operator*(const Gradus&l)

{

Gradus a, b;

cout<< «UMNOZHENIE GRADUSOV: «<<endl;

cout<<«Vvedite 1 MNOZHITEL': «<<endl;

cin >> a;

cout<<«Vvedite 2 MNOZHITEL': «<<endl;

cin >> b;

Gradus result;

result.grad = (a.grad*b.grad);

result.min = (a.min*b.min);

result.sec = (a.sec*b.sec);

while (result.grad>360)

{result.grad = result.grad-360;

}

while (result.sec>60)

{result.min=result.min+1;

result.sec=result.sec-60;

}

while (result.min>60)

{result.grad=result.grad+1;

result.min=result.min-60;

}

while (result.sec<0)

{result.min = result.min-1;

result.sec = result.sec+60;

}

while (result.min<0)

{result.grad=result.grad-1;

result.min=result.min+60;

}

while (result.grad>360)

{result.grad = result.grad-360;

}

cout <<endl<<«OTVET: «<< result.grad<<»\xF8 «<<result.min<<» ' «<<result.sec<<» '' «<<endl;

// запись в лог

ofstream f;

f.open («log.txt», ios:app);

f<< «Operacia umnozheniya \n»;

f<<«1 mnozhitel: «<<a<<endl;

f<<«2 mnozhitel: «<<b<<endl;

f<<«Resultat: «<< result.grad<<»\xF8 «<<result.min<<» ' «<<result.sec<<» '' «<<endl<<endl;

f.close();

return result;

}

Error.h:

#pragma once

#include <string>

#include <iostream>

using namespace std;

class error // класс ошибка

{

public:

string str;

// конструктор, инициирует атрибут str с сообщением об ошибке

error (string s) {str=s;}

void what() {cout<<str<<endl;} // выводит значение атрибута str

};

Dialog.h:

#include «Gradus.h»

#include «Error.h»

#include <iostream>

#include «Math.h»

#include <cmath>

#include <fstream>

#include <string>

class Dialog

{

public:

int menu();

};

Dialog.cpp:

#include «Gradus.h»

#include «Error.h»

#include <iostream>

#include «Math.h»

#include <cmath>

#include <fstream>

#include <string>

#include «Dialog.h»

int Dialog:menu()

{

try {

Gradus a, b, d, res2;

double sinus, cosinus, tangens, arcsinus, arccosinus, arctangens, result;

int c;

ofstream f;

const N=256;

do

{

// Меню

cout<<»\n1. Slozhenie uglov»;

cout<<»\n2. Vichitanie uglov»;

cout<<»\n3. Umnozhenie uglov»;

cout<<»\n4. Delenie uglov»;

cout<<»\n5. Sinus ugla»;

cout<<»\n6. Cosinus ugla»;

cout<<»\n7. Tangens ugla»;

cout<<»\n8. ArcSinus ugla»;

cout<<»\n9. ArcCos ugla»;

cout<<»\n10. ArcTan ugla»;

cout<<»\n11. Izmenenie znaka ugla»;

cout<<»\n12. Prochitat' log operaciy»;

cout<<»\n13. Ochistit' log operaciy»;

cout<<»\n0. Exit\n»;

cin>>c;

switch(c)

{

case 1: d = a+b;

break;

case 2: d = a-b;

break;

case 3: d = a*b;

break;

case 4: d = a/b;

break;

case 5:

cin>>a;

cout<<«a = «<<a<<endl; // вывод переменной

sinus = a.grad;

result=sin(sinus);

cout<< «sin=»<<result<<endl;

// запись в лог

f.open («log.txt», ios:app);

f<< «Operacia sinus \n»;

f<<«Ugol: «<<a<<endl;

f<<«Resultat: «<< result<<endl<<endl;

f.close();

break;

case 6:

cin>>a;

cout<<«a = «<<a<<endl; // вывод переменной

cosinus = a.grad;

result=cos(cosinus);

cout<< «cos=»<<result<<endl;

// запись в лог

f.open («log.txt», ios:app);

f<< «Operacia cosinus \n»;

f<<«Ugol: «<<a<<endl;

f<<«Resultat: «<< result<<endl<<endl;

f.close();

break;

case 7:

cin>>a;

cout<<«a = «<<a<<endl; // вывод переменной

tangens = a.grad;

result=tan(tangens);

cout<< «tan=»<<result<<endl;

// запись в лог

f.open («log.txt», ios:app);

f<< «Operacia tangens \n»;

f<<«Ugol: «<<a<<endl;

f<<«Resultat: «<< result<<endl<<endl;

f.close();

break;

case 8:

cin>>a;

cout<<«a = «<<a<<endl; // вывод переменной

arcsinus = a.grad;

result=asin(arcsinus);

cout<< «arcsin=»<<result<<endl;

// запись в лог

f.open («log.txt», ios:app);

f<< «Operacia arcsinus \n»;

f<<«Ugol: «<<a<<endl;

f<<«Resultat: «<< result<<endl<<endl;

f.close();

break;

case 9:

cin>>a;

cout<<«a = «<<a<<endl; // вывод переменной

arccosinus = a.grad;

result=acos(arccosinus);

cout<< «arccos=»<<result<<endl;

// запись в лог

f.open («log.txt», ios:app);

f<< «Operacia arccos \n»;

f<<«Ugol: «<<a<<endl;

f<<«Resultat: «<< result<<endl<<endl;

f.close();

break;

case 10:

cin>>a;

cout<<«a = «<<a<<endl; // вывод переменной

arctangens = a.grad;

result=atan(arctangens);

cout<< «arctan=»<<result<<endl;

// запись в лог

f.open («log.txt», ios:app);

f<< «Operacia arctan \n»;

f<<«Ugol: «<<a<<endl;

f<<«Resultat: «<< result<<endl<<endl;

f.close();

break;

case 11:

cin>>a;

cout<<«a = «<<a<<endl; // вывод переменной

res2.grad=(360 - (a.grad));

if (a.min!= 0)

{res2.grad = (res2.grad-1);}

res2.min=(60 - (a.min));

if (a.sec!= 0)

{res2.min = (res2.min-1);}

res2.sec=(60 - (a.sec));

cout<< «OTVET=»<<res2<<endl;

// запись в лог

f.open («log.txt», ios:app);

f<<«Operacia smena znaka v date «<<endl;

f<<«Ugol: «<<a<<endl;

f<<«Resultat: «<< res2.grad<<»\xF8 «<<res2.min<<» ' «<<res2.sec<<» '' «<<endl<<endl;

f.close();

break;

case 12:

{cout<<endl<<«Logfile: «<<endl; // Для красоты

char S[N]={«»}; // В S будут считываться строки

ifstream in1 («log.txt»); // Открыли файл для чтения

while (! in1.eof()) // Будем читать информацию пока не дойдем до конца файла

{

in1.getline (S, N); // Построчное считывание информации в S

cout<<S<<endl; // Вывод очередной строки на экран

}

in1.close(); // Закрыли открытый файл

break;}

case 13:

f.open («log.txt», ios:out);

f.close();

}

} while (c!=0);

}

catch (error e)

{e.what();}

return 0;

}

Kurs_main.cpp:

#include «Gradus.h»

#include «Dialog.h»

#include «Error.h»

#include <iostream>

#include «Math.h»

#include <cmath>

#include <fstream>

#include <string>

void main()

{Dialog d;

d.menu();

int f;

cin>>f;

}

Руководство пользователя:

Программа предназначена для произведения следующих операций над углами в градусной мере:

Сложение, вычитание, умножение, деление, нахождение тригонометрических и обратных тригонометрических функций, изменение знака угла.

Для запуска программы необходимо запустить файл Kursovoi.exe. После его запуска появится меню пользователя, взаимодействие с меню выполняется посредством клавиатуры. Введите номер пункта и нажмите Enter чтобы выполнить соответствующее действие. Все действия записываются в файл log.txt. Содержимое файла можно прочесть как отдельно, используя notepad или любой другой текстовый редактор, так и из интерфейса программы. В случае возникновения ошибки, данные о ней будут отображены на экране, для продолжения работы с программой после ошибки - закройте приложение и откройте заново.

калькулятор тригонометрический угол программирование

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

...

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

  • Разработка класса "Калькулятор" выполняющего ввод данных, проверку правильности введенных данных, выдачу соответствующих сообщений в случае возникновения ошибок. Листинг и скриншоты выполнения программы, порядок ее запуска. Руководство пользователя.

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

  • Особенности написания базы данных на языках программирования C++, применимой для расписания занятий в университете. Этапы работы: ввод новой записи, изменение, просмотр базы данных, поиск данных. Алгоритмы, используемые в процессе выполнения проекта.

    практическая работа [16,6 K], добавлен 12.06.2010

  • Линейный односвязный список (ЛОС) из введенных данных с клавиатуры с заданным указателем sag, работающий с типом данных Integer. Вывод информационных сообщений. Подсчет количества идентичных по содержанию элементов. Ввод данных в диалоговом режиме.

    лабораторная работа [36,3 K], добавлен 03.03.2009

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

    учебное пособие [1,3 M], добавлен 02.12.2011

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

    контрольная работа [1,9 M], добавлен 13.11.2016

  • Разработка программы на языке Visual Basic. Спецификация на программный модуль. Ввод, изменение и удаление данных по определенным требованиям. Руководство системного программиста, программиста и оператора. Ведение базы данных в виде таблицы Excel.

    курсовая работа [272,5 K], добавлен 21.04.2014

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

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

  • Методы реализации алгоритмов сортировки и алгоритмов поиска на языках программирования высокого уровня. Программирование алгоритмов сортировки и поиска в рамках создаваемого программного средства на языке Delphi. Создание руководства пользователя.

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

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

    лабораторная работа [231,9 K], добавлен 18.06.2011

  • Сравнительный анализ наиболее распространенных языков, их классификация, описание достоинств и недостатков. Использование процедур, функции и подпрограмм в языках программирования высокого уровня. Разработка и реализация программы "Бортовой компьютер".

    курсовая работа [329,8 K], добавлен 22.06.2014

  • Разработка ввода с клавиатуры и вывода на экран монитора данных с помощью стандартных функций printf и scanf. Ввод количества материальных точек. Работа с линейным списком. Хранение содержимого списка в блоке ячеек памяти с последовательными адресами.

    курсовая работа [176,8 K], добавлен 18.01.2016

  • Разработка программного приложения WindowsForms для работы с базой данных на языке высокого уровня C# в автономном режиме с использованием ADO.NET. Проектирование реляционной модели базы данных, интерфейса приложения, основных функций и возможностей.

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

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

    реферат [368,9 K], добавлен 31.05.2012

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

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

  • Информационные технологии и защиты данных. Методы защиты информации. Виды информационной безопасности и умышленные угрозы. Программирование на языке Turbo Pascal. Типы числовых данных. Функции ввода и вывода. Логические операторы, символьные переменные.

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

  • Основные понятия математического сопроцессора. Изучение принципа работы и функций устройства: точное деление, вычисление тригонометрических функций, извлечение квадратного корня и нахождение логарифма. Расчет себестоимости и экономической эффективности.

    дипломная работа [2,2 M], добавлен 15.05.2014

  • Особенности вывода на экран содержимого файла BAZA.txt. Анализ функций вывода информации о количестве каждой марки машин. Рассмотрение способов проектирования тестов программы методами черного ящика. Проблемы программирования на языке высокого уровня.

    контрольная работа [1,6 M], добавлен 04.01.2015

  • Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.

    курсовая работа [345,6 K], добавлен 13.11.2009

  • Проектирование структуры базы данных. Технология обработки данных. Порядок установки и запуска программы. Описание объектов приложения и структура данных. Ввод и изменение исходных данных. Получение выходных документов и тестирование программы.

    отчет по практике [2,3 M], добавлен 22.07.2012

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

    контрольная работа [31,2 K], добавлен 12.12.2009

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