Главный модуль программы - Калькулятор.cpp
//************************************************************ //*********** КУРСОВАЯ РАБОТА ******************* //************************************************************ /* "Калькулятор - для дробей" Позволяет производить операции: сложение, вычитание, умножение, деление, возведения в целую степень, извлечение квадратного корня, ввода исходных данных и вывода результатов расчета на экран и в текстовый файл для контроля, а также позволяет выйти из программы по нажатию клавиши esc.
Главная программа вызывает функции: - меню; - ввода дробных чисел, степени дробного числа; - математических операций с дробными числами; - вывода результатов на экран; - записи результатов в файл. */ #include <windows.h> #include <locale.h> //------------------- собственные файлы включения #include "Drob.h" #include "File.h" #include "InOut.h"
//прототип функции для арифметических операций: +,-,*,/ drob ArifmetOper(drob, char, HANDLE, FILE*);
//прототип функции для извлечения квадратного корня drob KvadratKoren(drob, char, HANDLE, FILE*);
//прототип функции для возведения в степень дроби drob VozvedStepen(drob, char, HANDLE, FILE*); //
//============================================================== int main() { setlocale(LC_ALL, "Russian"); drob d1; //объявление дроби char oper = 1; //вид операции //char str1[80]; //временная строка для записи
// определение дескриптора канала вывода для консоли HANDLE out; // вывод out = GetStdHandle(STD_OUTPUT_HANDLE);
//объявление указателя на файл FILE *fout;
//автоматическая запись на диск - открытие файла fout = OpenFil(out);
//начало работы menu(out);
d1 = GetDrob(out); writeDrobInFile(d1.chis, d1.znam,fout);
while(oper) { oper = GetOper(out); if(oper == 27) break; // реакция на esc - выход из программы switch(oper) { case '+': //сложение case '-': //вычитание case '*': //умножение case '/': //деление d1 = ArifmetOper(d1, oper, out, fout); break;
case '&': //квадратный корень d1 = KvadratKoren(d1, oper, out, fout); break;
case '^': //степень d1 = VozvedStepen(d1, oper, out, fout); break;
default: PrintNoOper(oper, out); }//swith };//while
if(fout) fclose(fout);//закрыть собственный файл, еcли он был открыт return 0; }
//================================================ //функция для арифметических операций: +,-,*,/ drob ArifmetOper(drob d1, char oper, HANDLE out, FILE* fout) { char str1[80];//временная строка для записи drob d2;
//запись операции в файл writeOperInFile(oper, fout); //получение второй дроби d2 = GetDrob(out); //запись дроби в файл на диск writeDrobInFile(d2.chis, d2.znam,fout); //проведение арифметической операции switch(oper) { case '+': d1 = Slogenie(d1, d2); break; case '-': d1 = Vy4itenie(d1, d2); break; case '*': d1 = Umnogenie(d1, d2); break; case '/': d1 = Delenie(d1, d2); break; } //печать ответа PrintOtvet(d1, out, str1, oper); //запись ответа в файл writeOtvetInFile(str1, fout); return d1; }
//======================================================= Функция для извлечения квадратного корня drob KvadratKoren(drob d1, char oper, HANDLE out, FILE *fout) { char str1[80];//временная строка для записи
//запись операции в файл writeOperInFile(oper, fout); //извлечение корня d1 = Koren(d1); //печать ответа PrintOtvet(d1, out, str1, oper); //запись ответа в файл writeOtvetInFile(str1, fout); return d1; }
//======================================================= Функция для возведения в степень дроби drob VozvedStepen(drob d1, char oper, HANDLE out, FILE* fout) { char str1[80];//временная строка для записи int step; //степень числа
//запись операции в файл writeOperInFile(oper, fout); //заданеие степени числа step = GetStep(out, str1); //запись величины степени в файл writeStepenInFile(str1, fout); //возведение в степень d1 = Stepen(d1, step); //печать ответа PrintOtvet(d1, out, str1, oper); //запись ответа в файл writeOtvetInFile(str1, fout); return d1; } Модуль программы InOut.h //Модуль определяет интерфейс с пользователем. //Функции для ввода строк и вывода строк на экран.
#include <stdio.h> #include <conio.h> #include <stdlib.h>
//-------------------------------------------------------------------- Функция вывода меню в красном цвете. void menu(HANDLE out) { //название консоли SetConsoleTitle(L"Калькулятор для дробей");
COORD XY; XY.X = 0; XY.Y = 0; SetConsoleCursorPosition(out,XY); SetConsoleTextAttribute(out, 12);//цвет алый printf_s("Выберите операцию \ \n\tарифметические операции: +, -, *, /, \ \n\tвозведение в степень: ^, \ \n\tквадратный корень: &, \ \n\tвыход: клавиша esc \n"); } //--------------------------------------------------- Функция вспомогательная проверки вводимой строки //на цифры (допустимые значения) int Proverka(char *str) { int err = 0; for(int i=0; str[i]!= 0; i++) { if(str[i]< 0x30 || str[i] > 0x39)//выделение кодов цифр { err = 1; break; } } return err? -1: atoi(str);//применение тернарного оператора } //-------------------------------------------------------------- Функция с параметрами по умолчанию для Ввода строки символов с сообщениями и преобразованием строки
|