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

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

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




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


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


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


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

Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование:пакетики семян различных сортов томатов...

Тема: Составление цепи питания Цель: расширить знания о биотических факторах среды. Оборудование:гербарные растения...

В эволюции растений и животных. Цель: выявить ароморфозы и идиоадаптации у растений Цель: выявить ароморфозы и идиоадаптации у растений. Оборудование: гербарные растения, чучела хордовых (рыб, земноводных, птиц, пресмыкающихся, млекопитающих), коллекции насекомых, влажные препараты паразитических червей, мох, хвощ, папоротник...

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

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