/*
* @file Lab_2_2.cpp
* @author Дарчук Г.С., 515i
* @date 14.03.2025
* @brief Лабораторна робота №2, варіант 22
*
* Модульне тестування. Завдання 2
*/
// Підключення стандартних бібліотек
#include <stdio.h>
#include <locale.h>
#include <string.h>
// Підключення заголовочного файлу з реалізацією функцій
#include "calculatorFunctions.h"
int main(void)
{
// Оголошення змінних для обчислень
double a = 0; // Перше число (або результат попереднього обчислення)
char type[6]; // Тип операції (максимум 6 символів)
double b = 0; // Друге число
while (1)
{
// Запит першого числа
printf("Введіть перше число: ");
scanf("%lf", &a);
while (1)
{
// Виведення поточного значення `a`
printf("Перше/отримане число: %lf\n", a);
printf("Введіть тип операції: "); // Запит типу операції
scanf("%5s", type);
if (strcmp(type, "reset") == 0) break; // Завершення обчислень за командою "скид"
// Операція додавання
if (strcmp(type, "+") == 0)
{
printf("Введіть друге число: ");
scanf("%lf", &b);
a = add(a, b);
continue;
}
// Операція віднімання
if (strcmp(type, "-") == 0)
{
printf("Введіть друге число: ");
scanf("%lf", &b);
a = substract(a, b);
continue;
}
// Операція множення
if (strcmp(type, "*") == 0)
{
printf("Введіть друге число: ");
scanf("%lf", &b);
a = multiply(a, b);
continue;
}
// Операція ділення
if (strcmp(type, "/") == 0)
{
printf("Введіть друге число: ");
scanf("%lf", &b);
// Перевірка на ділення на нуль
if (b == 0)
{
printf("Помилка: ділення на нуль! Можливо сплутано тип команди або друге число!\n");
continue;
}
a = divide(a, b);
continue;
}
// Операція обчислення тангенса
if (strcmp(type, "tan") == 0)
{
a = tang(a);
continue;
}
// Операція зведення у квадрат
if (strcmp(type, "squar") == 0)
{
a = squar(a);
continue;
}
// Операція зведення у куб
if (strcmp(type, "cub") == 0)
{
a = cub(a);
continue;
}
// Завершення роботи програми
if (strcmp(type, "exit") == 0) return 0;
// Повідомлення про невідому команду
printf("Помилка: такої команди не існує!\n");
}
}
}
/*
* @file calculatorFunctions.h
* @author Дарчук Г.С., 515i
* @date 14.03.2025
* @brief Лабораторна робота №2, варіант 22
*
* Модульне тестування. Завдання 2
*/
// Перевіряє, чи не визначено макрос CALCULATORFUNCTIONS_H
#ifndef CALCULATORFUNCTIONS_H
// Якщо макрос не визначений, то визначає його
#define CALCULATORFUNCTIONS_H
// Оголошення функцій для обчислення калькулятором
double add(double a, double b);
double substract(double a, double b);
double multiply(double a, double b);
double divide(double a, double b);
double tang(double a);
double cub(double a);
double squar(double a);
// Завершення умови перевірки та визначення макроса
#endif
/*
* @file calculatorFunctions.cpp
* @author Дарчук Г.С., 515i
* @date 14.03.2025
* @brief Лабораторна робота №2, варіант 22
*
* Модульне тестування. Завдання 2
*/
#include <stdio.h>
#define _USE_MATH_DEFINES
#include <math.h>
double add(double a, double b)
{
a += b;
return a;
}
double substract(double a, double b)
{
a -= b;
return a;
}
double multiply(double a, double b)
{
a *= b;
return a;
}
double divide(double a, double b)
{
a /= b;
return a;
}
double tang(double a)
{
a = tan(a*M_PI/180);
return a;
}
double cub(double a)
{
a = pow(a, 3);
return a;
}
double squar(double a)
{
a = pow(a, 2);
return a;
}