Студопедия — Главный модуль программы - Калькулятор.cpp
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Главный модуль программы - Калькулятор.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);//применение тернарного оператора

}

//--------------------------------------------------------------

Функция с параметрами по умолчанию для

Ввода строки символов с сообщениями и преобразованием строки







Дата добавления: 2015-10-01; просмотров: 444. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Вопрос 1. Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации К коллективным средствам защиты относятся: вентиляция, отопление, освещение, защита от шума и вибрации...

Задержки и неисправности пистолета Макарова 1.Что может произойти при стрельбе из пистолета, если загрязнятся пазы на рамке...

Вопрос. Отличие деятельности человека от поведения животных главные отличия деятельности человека от активности животных сводятся к следующему: 1...

Объект, субъект, предмет, цели и задачи управления персоналом Социальная система организации делится на две основные подсистемы: управляющую и управляемую...

Законы Генри, Дальтона, Сеченова. Применение этих законов при лечении кессонной болезни, лечении в барокамере и исследовании электролитного состава крови Закон Генри: Количество газа, растворенного при данной температуре в определенном объеме жидкости, при равновесии прямо пропорциональны давлению газа...

Ганглиоблокаторы. Классификация. Механизм действия. Фармакодинамика. Применение.Побочные эфффекты Никотинчувствительные холинорецепторы (н-холинорецепторы) в основном локализованы на постсинаптических мембранах в синапсах скелетной мускулатуры...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия