Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка - Калькулятор для дробей.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
868 Кб
Скачать
☆

2.2 Спецификация программы

В спецификации программы определены основные файлы программы «Калькулятор для дробей».

Обозначения

Наименование

Примечание

Калькулятор для дробей.exe

Исполняемая программа

Входная точка в программу

Калькулятор.срр

Главная функция

Занимается вызовом основных вычислительных функций

Drob.h

Файл включений

Определены понятия дроби и функции, непосредственно занимающиеся с дробями

File.h

Файл включений

Определены файловые функции для калькулятора

InOut.h

Файл включений

Определены все функции, использующие ввод и вывод на экран

Protokol.txt

Текстовый файл

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

Калькулятор для дробей.sln

Файл проекта

Файл решений проекта (рабочая область проекта), находится в главном каталоге проекта

Калькулятор для дробей. suo

Файл опций

Файл опций для создания решения, находится в главном каталоге проекта

vc90.idb

Файл для компилятора

Устанавливает зависимость между источниками, которые используются компилятором, находится в каталоге t2/Release

2.3 Описание программы

При создании программы калькулятора использовался модульный принцип построения программ. Все исходные модули логически разделены на файлы. Программа состоит из 4-х файлов: «Калькулятор.срр», «InOut.h», «Drob.h», «Filе.h». Такое разделение позволяет включить файл «Drob.h» без изменений в другие проекты, которые могут применять технологии API, MFC, CLR.

Файл «Калькулятор.срр» - главный, является по своей сути управляющим. Здесь осуществляется вход в программу. Этот модуль вызывает функции из других модулей – файлов включений «InOut.h», «Drob.h», «Filе.h», а также стандартные библиотечные функции для вывода русских букв.

Функции, объявленные и описанные в модуле «Калькулятор.срр» вызываются в ходе программы:

drob ArifmetOper(drob d1, char oper, HANDLE out, FILE* fout)

- функция для арифметических операций (+,-,*,/). Функция применяется для упрощения алгоритма, так как операции, проводимые с арифметическими действиями почти идентичны.

drob KvadratKoren(drob d1, char oper, HANDLE out, FILE *fout).

- функция для извлечения квадратного корня

drob VozvedStepen(drob d1, char oper, HANDLE out, FILE* fout).

- функция для возведения в степень дроби. Дробь любое положительное целое число.

Все три функции получают по четыре параметра. Три из них передаются по значению, - дробь как структура, операция, дескриптор канала вывода. Четвертый параметр - дескриптор текстового файла. Он передается через указатель. Каждая из перечисленных функций имеет тип drob, так как возвращает результат (величину дроби) для дальнейшего использования в расчетах.

Файл «InOut.h» - файл включений, содержит набор функций ввода с клавиатуры и вывода на экран. Этот файл определяет интерфейс, применим только в консольной технологии.

Содержание файла «InOut.h»:

void menu(HANDLE out)

- функция выводит меню в красном цвете. Параметр функции – дескриптор канала вывода.

drob GetDrob(HANDLE out)

- функция формирование дроби из двух целых чисел, вызывает функцию получения числа InputNum() сначала для числителя, потом для знаменателя. Обращение к функции получения числа происходит до тех пор, пока не будет получено число больше 0. Входной параметр функции - дескриптор канала вывода. Выходной параметр – дробь.

int InputNum(HANDLE out, char *mes, char *error, int begPoz=0, WORD PozitionNumX=0, WORD PozitionNumY=10)

- функция получения числа. Используется для получения величины числителя, знаменателя или степени. Эта функция выдает подсказку для действия оператора в определенной позиции экрана, при необходимости выдает сообщение об ошибке, вводит строку символов, вызывает функцию проверки и преобразования символьной строки в целое число Proverka(), возвращает преобразованное целое число. Функция использует параметры по умолчанию. Параметры функции: дескриптор вывода, подсказка оператору, сообщение об ошибке, начальная координата, для стирания строки, координата по Х и по У для вывода подсказки.

int Proverka(char *str)

- функция вспомогательная, вызывается из функции InputNum, проверяет введенную строкув на допустимые значения. Функция возвращает число, преобразовванное из символьной строки, если все символы допустимы, иначе возвращается -1 (ошибка).

int GetStep(HANDLE out, char *str1)

- функция формирования степени целого числа с записью в строку для протокола. Так как степень – целое число, то данная функция вызывает InputNum(). Параметры функции: – дескриптор канала вывода и адрес строки, в которую преобразовавается величина степени для записи в файл. Возвращаемое значение – величина степени.

void PrintOtvet(drob d, HANDLE out, char * str1, char oper)

- функция вывода ответа в определенном месте экрана. Осуществляет вывод дроби с преобразованием в целую и дробную часть на экран и записывает значение дроби в строку str1 для протокола с указанием операции. Дробь выводится правильная или смешанная. Входные параметры функции: значение дроби, дескриптор канала вывода, адрес строки символов (ответ преобразованный в строку), вид операции. Выходных параметров нет.

char GetOper(HANDLE out)

- функция ввода операции. В определенном месте экрана функция выдает подсказку для ввода операции, затем вводит саму операцию. Входные параметры функции: дескриптор канала вывода. Выходные параметры функции – символ операции.

void PrintNoOper(char oper, HANDLE out)

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

Файл «Drob.h» - файл включений, содержит набор функций, работающий с дробями. Данный файл можно включать как законченную часть в проекты с другими технологиями. Файл объявляет дробь как структуру и содержит набор функций:

drob Sokrasenie(drob dr)

- функция сокращение дробей - сокращение числителя и знаменателя через нахождение НОД. Используется алгоритм Евклида. Входной параметр – дробь, выходной сокращенная дробь.

drob Slogenie(drob f1, drob f2) - функция сложения дробей.

drob Vy4itenie(drob f1, drob f2) - функция вычитания дробей.

drob Umnogenie(drob f1, drob f2) - функция умножения дробей.

drob Delenie(drob f1, drob f2) - функция деления дробей.

У функций, выполняющих арифметические действия, используется стандартный математический алгоритм. Входные параметры – две дроби. После расчетов вызывается функция Sokrasenie(). Выходной параметр - результирующая сокращенная дробь.

drob Koren(drob f1) - функция вычисляет квадратный корень. Используется метод вычитания последовательности нечетных чисел. Входной параметр – дробь, выходной - результирующая сокращенная дробь.

drob Stepen(drob f1, int stepen) - функция возведения дроби в целую степень. Используется алгоритм умножения дроби на себя stepen раз. Входные параметры –дробь и степень дроби. Выходной параметр - результирующая сокращенная дробь.

Файл «Filе.h» - файл включений, содержит набор функций, работающий с текстовым файлом.

FILE * OpenFil(HANDLE out)

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

void writeDrobInFile(int i, int j, FILE *fout)

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

void writeOtvetInFile(char *str1, FILE *fout)

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

void writeOperInFile(char oper, FILE *fout)

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

void writeStepenInFile(char *str1, FILE *fout)

- функция записи значения степени. Входные параметры: строка символов, дескриптор файла. Выходные параметры отсутствуют.

2.4 Тестирование программы

Тестирование программы оценивает ее работоспособность и надежность. Чтобы программу проверить, необходимо произвести расчет формулы с заранее известным ответом:

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

При расчете вышеуказанной формулы в текстовом файле «Protokol.txt» появляется такая запись:

( 1/2 ) - ( 3/4 ) Ответ: ( -1 / 4)

+ ( 3/8 ) Ответ: ( 1 / 8)

^ 2 Ответ: ( 1 / 64)

* ( 25/1 ) Ответ: ( 25 / 64)

& Ответ: ( 5 / 8)

/ ( 1/4 ) Ответ: (2 1 / 2)

* ( 8/3 ) Ответ: (6 2 / 3)