Студопедия Главная Случайная страница Обратная связь

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

Главный модуль программы - Калькулятор.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; просмотров: 457. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

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

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

Медицинская документация родильного дома Учетные формы родильного дома № 111/у Индивидуальная карта беременной и родильницы № 113/у Обменная карта родильного дома...

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

Ученые, внесшие большой вклад в развитие науки биологии Краткая история развития биологии. Чарльз Дарвин (1809 -1882)- основной труд « О происхождении видов путем естественного отбора или Сохранение благоприятствующих пород в борьбе за жизнь»...

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