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



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

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

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

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

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

Устройство рабочих органов мясорубки Независимо от марки мясорубки и её технических характеристик, все они имеют принципиально одинаковые устройства...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

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