1.3.2 Описание алгоритма
В программе решаются одновременно две задачи: работа с дробями и запись этой работы в файл на диск.
Программа калькулятор достаточно простая, рассматривать алгоритмы работы большинства функций не имеет смысла. В данной курсовой работе представлены наиболее интересные алгоритмы программы калькулятор..
Основной алгоритм работы программы представляет собой типичный алгоритм по выбору пунктов меню и вызове соответствующих функций. Алгоритм главной программы осуществляет:
- вывод меню;
- открытие файла;
- ввод дроби и запись в файл;
- ввод математической операции или завершения программы;
- выбор математической операции с записью в файл;
- в зависимости от выбранной математической операции, необходимо сделать ввод дроби или степень, или сразу получить ответ. При этом сразу идет запись текущей информации на диск;
- при нажатии клавиши «Esc», закрывается файл и выход из программы.
Алгоритм главной программы представлен на рисунке 1.
В связи с тем, что главный модуль вызывает функции для проведения арифметических операций, их алгоритм единообразный и представлен на рисунке 2. Сами же действия с дробями очень просты, поэтому их алгоритмы не рассматриваются.
Алгоритмы функций извлечения корня и возведения дроби в степень представлены на рисунках 3 и 4 соответственно.
Следует отметить алгоритм вывода ответа и алгоритм формирования дроби.
Алгоритм вывода ответа позволяет вывести дробь в зеленом цвете и строго указанном месте экрана в виде правильной дроби или смешанного числа.
Алгоритм вывода подразумевает:
установления позиции курсора;
очищения строка для вывода путем записи пробелов;
восстановления позиция курсора;
задание цвета вывода зеленым;
сравнения величины числителя и знаменателя. Если дробь неправильная, то выделяется целая часть путем подсчета количества раз вхождения знаменателя в числитель. Как только величина числителя становится меньше знаменателя, записывается ответ в строку символов, находящуюся в памяти для вывода в протокол, и на экран. При правильной дроби сразу же записывается ответ на экран и в строку символов.
восстановление белого цвета для дальнейшего вывода.
Алгоритм формирования дроби заключается в последовательном воде двух символьных строк с анализом на ввод ошибок, преобразованием этих строк в целые числа соответственно для числителя и знаменателя дроби. Цвет символов при выводе сообщений для оператора и введенных строк осуществляются в определенных местах консольного окна. Алгоритм формирования дроби (а) с вызовом функции ввода (б) представлены на рисунке 5.
Рисунок 1. Алгоритм главной программы.
Рисунок 2. Алгоритм вызова арифметических операций.
Рисунок 3. Алгоритм вызова функций извлечения квадратного корня. |
|
Рисунок 4. Алгоритм вызова функций возведения дроби в степень. |
а) |
|
б) |
Рисунок 5 Алгоритм формирования дроби (а) с вызовом функции ввода (б).
1.3.3 Организация входных и выходных данных
Входные данные – данные, с которыми работает программа: числитель, знаменатель, степень числа – натуральные числа, а вид операции - символ. Перечисленные данные вводятся с клавиатуры. При вводе числителя, знаменателя, степени числа применяется ввод сроки символов в символьный массив. Такой ввод удобен, так как позволяет вовремя обнаружить и исправить ошибки.
Дробное число состоит из двух составляющих, поэтому разумно его представить как структуру - собственный тип данных:
struct drob
{
int chis; //числитель
int znam; //знаменатель
};
Так как каждое поле структуры – целое число, символьный массив после ввода и проверки на ошибки переводится в целое число.
Степень дробного числа - целое число, для ее получения используется такой же способ, как и составляющих частей дроби. Степень в программе определена как int step.
Вид операции или операция – символьная переменная, определенная как char oper. Данная переменная может принимать строго определенные значения: «+», «-», «*», «/», «^», «&», либо значение переменной с кодом 1 и 27. Любое другое значение переменной вызовет сообщение о неправильной операции.
Выходные данные – результат расчета операций с дробями представляет собой дробь, которая выводится на экран в последовательности: значения числителя, знака «/», значение знаменателя взятые в круглые скобки. Например: ( 1/2 ).
Кроме того, при запуске программы выдаются текстовые сообщения о последовательности действий оператора и об ошибках, допущенных оператором.
Дроби и операции с ними последовательно, по мере проведения расчета, записываются в текстовый файл протокола для контроля. Эта запись представляет собой форматированный вывод дробей, операций между ними, и ответов.
