Lab 2 Task 2

Run Settings
LanguageC
Language Version
Run Command
/** * @file Lab_2_2.c * @author Тарценко М. В., гр. 515і * @date 2 березня 2023 * @brief Лабораторна робота №2, варіант 13 * * Модульне тестування. Завдання 2 */ //під'єдання заголовних файлів #include <stdio.h> #include <locale.h> #include <stdlib.h> #include "main_oper.h" //файл з основними операціями #include "add_oper.h" //файл з додатковими операціями int main() { //ініціалізація змінних char op, c; float a, b; float result; setlocale(LC_ALL, "ukr"); //локалізація програми українською again: //точка переходу до початку роботи програми після скидання або після помилки do{ system("cls"); printf("\n Введiть число: "); } while (((scanf("%f%c", &a, &c) != 2 || c != '\n') && clean_stdin()));; //введення операнду з перевіркою коректності res_trans: //точка переходу для продовження роботи з результатом та при невірно вказаній операції do { printf("\n Введiть потрiбну операцiю (C, +, -, *, /, a (arctg), s (x^2), p (x^5), e): "); } while (((scanf(" %c%c", &op, &c) != 2 || c != '\n') && clean_stdin()));; //визначення операції к обробкою некоректних даних switch (op) { //реалізація запросу другого операнду при виборі основних операції case '+': case '-': case '*': case '/': { do { system("cls"); printf("\n Введiть друге число: "); } while (((scanf("%f%c", &b, &c) != 2 || c != '\n') && clean_stdin()));; //введення другого операнду з перевіркою коректності break; } case 'a': case 's': case 'p': case 'C':break; default: { //обробка помилки невірно вказаної операції system("cls"); //очистка консолі printf("\n Невiрно вказана операцiя!\n"); goto res_trans; } } switch (op) { //реалізація виведення результату в залежності від обраної операції case '+':result = addition(a, b); break; //додавання case '-':result = subtraction(a, b); break; //віднімання case '*':result = multiplication(a, b); break; //множення case '/': { if (b == 0) { //реалізація помилки при діленні на нуль system("cls"); //очистка консолі printf("\n Помилка! Дiлення на нуль неможливе!\n"); goto again; //перехід на початок програми } else result = division(a, b); break; //ділення } //реалізація додаткових операцій case 'a':result = arctg(a); break; //арктангенс числа case 's':result = pow2(a); break; //квадрат числа case 'p':result = pow5(a); break; //число в 5 степені case 'C':goto again; //операція скидання з переходом у початок програми } system("cls"); //очистка консолі printf("\n Результат: %.2f\n", result); //виведення результату printf("\n Чи бажаете ви продовжити операції над результатом?(y/n)\n Також ви можете завершити роботу програми.(e)"); // || запрос на продовження операцій над результатом printf("\n Ваш вибір: "); scanf(" %c", &c); //зчитування вибору користувача if (c == 'y') { //продовження операцій над результатом a = result; //визначення результату як операнду system("cls"); //очистка консолі goto res_trans; //перехід до вибору операції } else if (c == 'n') { //відмова від продовження операцій над результатом system("cls"); //очистка консолі goto again; //перехід до початку програми } else if (c == 'e') { //підтвердження завершення роботи програми system("cls"); //очистка консолі exit(EXIT_SUCCESS); //завершення роботи програми } }
/** * @file main_oper.c * @author Тарценко М. В., гр. 515і * @date 2 березня 2023 * @brief Лабораторна робота №2, варіант 13 * * Модульне тестування. Завдання 2 */ #include "main_oper.h" float addition(float a, float b) { a += b; return a; } float subtraction(float a, float b) { a -= b; return a; } float multiplication(float a, float b) { a *= b; return a; } float division(float a, float b) { a /= b; return a; } int clean_stdin() { while (getchar() != '\n'); return 1; }
/** * @file main_oper.h * @author Тарценко М. В., гр. 515і * @date 2 березня 2023 * @brief Лабораторна робота №2, варіант 13 * * Модульне тестування. Завдання 2 */ #include <stdio.h> float addition(float a, float b); float subtraction(float a, float b); float multiplication(float a, float b); float division(float a, float b); int clean_stdin();
/** * @file add_oper.c * @author Тарценко М. В., гр. 515і * @date 2 березня 2023 * @brief Лабораторна робота №2, варіант 13 * * Модульне тестування. Завдання 2 */ #include "add_oper.h" //арктангенс числа float arctg(float a) { a = 180 / M_PI * atan(a); return a; } //квадрат числа float pow2(float a) { a = pow(a,2); return a; } //число в 5 степені float pow5(float a) { a = pow(a,5); return a; }
/** * @file add_oper.h * @author Тарценко М. В., гр. 515і * @date 2 березня 2023 * @brief Лабораторна робота №2, варіант 13 * * Модульне тестування. Завдання 2 */ #include <stdio.h> #define _USE_MATH_DEFINES #include <math.h> float arctg(float a); float pow2(float a); float pow5(float a);
Editor Settings
Theme
Key bindings
Full width
Lines