Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "GiantInteger.h"
- #include <conio.h>
- #include <fstream>
- #include <ctime>
- int main() {
- setlocale(LC_ALL, "russian");
- string str1, str2, a;
- ofstream log1;
- ifstream log2;
- int i, key;
- bool check;
- for (; ;) { // основной цикл программы
- cout << " ----------------\n ГЛАВНОЕ МЕНЮ\n ----------------\n";
- cout << "->Для начала работы нажмите любую клавишу\n->Для просмотра истории операций нажмите пробел\n->Для выхода из программы нажмите ESC";
- key = _getch(); // считывание нажатой клавиши
- if (key == 27) return 0;
- if (key == 32) {
- log2.open("log.txt");
- std::system("cls");
- cout << " --------------------\n ИСТОРИЯ ОПЕРАЦИЙ\n --------------------\n";
- if (log2.peek() == EOF) {
- cout << "История операций пуста\n\n";
- log2.close();
- }
- else { // вывод истории операций
- while (!log2.eof()) {
- getline(log2, str1);
- cout << str1 << endl;
- }
- log2.close();
- }
- cout << "->Для очистки истории операций нажмите пробел\n->Для продолжения работы нажмите любую клавишу\n->Для выхода в главное меню нажмите ESC\n";
- key = _getch();
- if (key == 32) {
- log1.open("log.txt", ios::trunc); log1.close(); std::system("cls"); cout << "Очистка прошла успешно!\n\n"; // очистка истории операций
- cout << "Для выхода в главное меню нажмите ESC\n";
- while (key != 27)
- key = _getch();
- }
- }
- std::system("cls");
- while (key != 27) {
- cout << "Введите 1-е число: ";
- do { // цикл проверки ввода
- cin >> str1;
- for (int i = 0; i < str1.size(); i++) {
- if (str1[i] >= '0' && str1[i] <= '9') {
- check = true;
- }
- else {
- check = false;
- cout << "Неверный ввод! Введите новое число: \n";
- break;
- }
- }
- } while (check != 1);
- GiantInteger number(str1);
- do {
- std::system("cls");
- cout << "1-е число: " << number << endl;
- cout << "Введите 2-e число: ";
- do { // цикл проверки ввода
- cin >> str2;
- for (int i = 0; i < str2.size(); i++) {
- if (str2[i] >= '0' && str2[i] <= '9') {
- check = true;
- }
- else {
- check = false;
- cout << "Неверный ввод! Введите новое число: \n";
- break;
- }
- }
- } while (check != 1);
- GiantInteger number2(str2);
- std::system("cls");
- cout << "1-е число: " << number << endl << "2-е число: " << number2 << endl;
- cout << "Выберите операцию: \n1)Сложение\n2)Вычитание\n3)Умножение\n4)Деление\n";
- do {
- cin >> a;
- if ((a.size() == 1) && (a[0] == '1' || a[0] == '2' || a[0] == '3' || a[0] == '4')) check = true; // проверка ввода
- else check = false;
- if (check) { // запись времени операции в файл
- time_t rawtime;
- time(&rawtime);
- log1.open("log.txt", ios::app);
- log1 << ctime(&rawtime);
- log1.close();
- }
- switch (atoi(a.c_str())) {
- case 1: {std::system("cls");cout << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Сложение\n" << "Результат: " << number + number2 << endl << endl;
- log1.open("log.txt", ios::app); log1 << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Сложение\n" << "Результат: " << number + number2 << endl << endl;
- number = number + number2; break;}
- case 2: {std::system("cls");cout << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Вычитание\n" << "Результат: " << number - number2 << endl << endl;
- log1.open("log.txt", ios::app); log1 << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Вычитание\n" << "Результат: " << number - number2 << endl << endl;
- number = number - number2; break;}
- case 3: {std::system("cls");cout << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Умножение\n" << "Результат: " << number * number2 << endl << endl;
- log1.open("log.txt", ios::app); log1 << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Умножение\n" << "Результат: " << number * number2 << endl << endl;
- number = number * number2; break;}
- case 4: {
- std::system("cls");
- if (number2 != 0) {
- cout << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Деление\n" << "Результат: " << number / number2 << endl;
- log1.open("log.txt", ios::app); log1 << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Деление\n" << "Результат: " << number / number2 << endl << endl; log1.close();
- number = number / number2; break;
- }
- else {
- cout << "На ноль делить нельзя!\nВы можете продолжить работу с первым числом или ввести новые\n\n";
- log1.open("log.txt", ios::app); log1 << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Деление\n" << "Результат: Ошибка! Делить на ноль нельзя!\n\n";
- break;
- }
- }
- default: {cout << "Неправильный ввод!\n";break;}
- }
- log1.close();
- } while (!check);
- cout << "->Для продолжения работы с итоговым числом нажмите любую клавишу\n->Для работы с новыми числами нажмите пробел\n->Для выхода в главное меню нажмите ESC";
- key = _getch();
- if (key == 27) break;
- } while (key != 32);
- std::system("cls");
- }
- }
- }
Add Comment
Please, Sign In to add comment