Calc

Run Settings
LanguageC
Language Version
Run Command
/** * @file Main.cpp * @autor Коваленко І. В. 515б * @date 02.02.2023 * @brief Лабораторна робота №2, варіант 11 * * Модульне тестування. Завдання 2 */ #include "Foonk.h" #include <stdio.h> #include <locale.h> int main(void) { setlocale(LC_ALL, "ru"); //вызов калькулятора calculation(0,0,0,0); //завершение программы printf("Завершение программы."); return 0; }
#define PRIVATE static #define PUBLIC #define END_PROGRAM 0 #define ERROR -1 #define DEGREES 57.29577951308 #ifndef MYBOOLEAN_H #define MYBOOLEAN_H #define false 0 #define true 1 typedef int bool; // or #define bool int #endif //прототипы функций double object(); char action_on_object(); double calculation(double object_x, bool continue_of_operation_return, char action_on_object, double object_y); double continue_of_operation(double answer_from_calculator); double calculation_addition(double object_x, double object_y); double calculation_subtraction(double object_x, double object_y); double calculation_multiplication(double object_x, double object_y); double calculation_division(double object_x, double object_y); double calculation_of_arcsinx(double object_x); double calculation_of_root(double object_x); double calculation_of_degree(double object_x);
#include "Foonk.h" #include <stdio.h> #include <locale.h> #include <math.h> //функция возвращающая числа double object() { double num; //ввод данных printf("Введите ваше число: "); scanf("%lg", &num); //возврат числа return num; } //функция возвращающет действие и првоеряет корректность действия char action_on_object() { //переменная действия char action; //оглашение возможных действий ( + , - , * , / , C , arcsin(x) , 4rx , x^3) printf("\n==================================================\n"); printf("Введите действие, которое хотите ввести.\nВозможные действия:\n\t+\t|\tсумма\n\t-\t|\tразница\n\t*\t|\tумнжение\n\t/\t|\tделение\n\tC\t|\tочистка данных\n\ta\t|\tarcsin(x)\n\tr\t|\tкорень четвертой степени\n\td\t|\tстепень третьей степени\n"); printf("\n==================================================\n\n"); //ввод действия action = getchar(); //проверка действия switch (action) { case '+': case '-': case '*': case '/': case 'C': case 'a': case 'r': case 'd': break; default: printf("Ошибка введенных данных. Пожалуйста, попробуйте снова."); return ERROR; } //объявление выполняемого значения printf("Ваше действие: %c\n", action); //возврат значений действия return action; } //функция-калькулятор (первое число, повторный вызов функции?, выполняемое действие, второе число) double calculation(double object_x, bool continue_of_operation_return, char callback_of_action_on_object, double object_y) { //условия запроса данных и их условия, для устранения ошибок if(continue_of_operation_return == 0) object_x = object(); callback_of_action_on_object = action_on_object(); if (callback_of_action_on_object == -1) return ERROR; if (!(callback_of_action_on_object == 'C' || callback_of_action_on_object == 'a' || callback_of_action_on_object == 'r' || callback_of_action_on_object == 'd')) object_y = object(); //создание переменных double calculated_object; //возможные действия калькулятора switch (callback_of_action_on_object) { //сложение чисел case '+': calculated_object = calculation_addition(object_x, object_y); break; //вычитание чисел case '-': calculated_object = calculation_subtraction(object_x, object_y); break; //умножение чисел case '*': calculated_object = calculation_multiplication(object_x, object_y); break; //деление чисел case '/': if (object_y == 0) { printf("Ошибка. Знаменатель не может ровняться нулю."); return ERROR; } calculated_object = calculation_division(object_x, object_y); break; //стереть данные case 'C': calculated_object = 0; break; //арксинус первой переменной case 'a': if (object_x < -1 || object_x > 1) { printf("Ошибка. Число должно быть в промежутке [-1 ; 1]."); return ERROR; } printf("Рассчет и перевод значений в градусы...\n"); calculated_object = calculation_of_arcsinx(object_x); break; //корень четвертой степени числа case 'r': if (object_x < 0) { printf("Ошибка. Недопустимые значения под корнем, число должно быть больше либо равно нулю.\n"); return ERROR; }else calculated_object = calculation_of_root(object_x); break; //число в третьей степени case 'd': calculated_object = calculation_of_degree(object_x); break; //ошибочные данные default: printf("Ошибка введенных данных. Пожалуйста, попробуйте снова."); return ERROR; } //вызов функции запроса на продолжение return continue_of_operation(calculated_object); } //сложение чисел double calculation_addition(double object_x, double object_y) { return object_x + object_y; } //вычитание чисел double calculation_subtraction(double object_x, double object_y) { return object_x - object_y; } //умножение чисел double calculation_multiplication(double object_x, double object_y) { return object_x * object_y; } //деление чисел double calculation_division(double object_x, double object_y) { return object_x / object_y; } //арксинус первой переменной double calculation_of_arcsinx(double object_x) { return asin(object_x) * DEGREES; } //корень четвертой степени числа double calculation_of_root(double object_x) { return pow(object_x, 0.25); } //число в третьей степени double calculation_of_degree(double object_x) { return pow(object_x, 3.0); } //функция продолжения операции, она определяет, будет ли продолжена операция или нет double continue_of_operation(double answer_from_calculator) { //запрос на продолжение printf("Ответ: %lg\nХотите выполнить больше операций?\n", answer_from_calculator); printf("1 - да\n2 - нет\n"); //создание переменной char done; //ввод данных done = getchar(); //если да if (done == 1) { printf("Ваше число: %lg\n", answer_from_calculator); return calculation(answer_from_calculator, 1, 0, 0); } //если нет else if (done == 2) return END_PROGRAM; //ошибка else return ERROR; }
Editor Settings
Theme
Key bindings
Full width
Lines