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



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

Огоньки» в основной период В основной период смены могут проводиться три вида «огоньков»: «огонек-анализ», тематический «огонек» и «конфликтный» огонек...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

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

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

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