Kolyach

Untitled

Jun 2nd, 2019
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.33 KB | None | 0 0
  1.  
  2. #include "GiantInteger.h"
  3. #include <conio.h>
  4. #include <fstream>
  5. #include <ctime>
  6.  
  7. int main() {
  8.     setlocale(LC_ALL, "russian");
  9.     string str1, str2, a;
  10.     ofstream log1;
  11.     ifstream log2;
  12.     int i, key;
  13.     bool check;
  14.  
  15.     for (; ;) {  // основной цикл программы
  16.         cout << " ----------------\n   ГЛАВНОЕ МЕНЮ\n ----------------\n";
  17.         cout << "->Для начала работы нажмите любую клавишу\n->Для просмотра истории операций нажмите пробел\n->Для выхода из программы нажмите ESC";
  18.         key = _getch(); // считывание нажатой клавиши
  19.         if (key == 27) return 0;
  20.         if (key == 32) {
  21.             log2.open("log.txt");
  22.             std::system("cls");
  23.             cout << " --------------------\n   ИСТОРИЯ ОПЕРАЦИЙ\n --------------------\n";
  24.             if (log2.peek() == EOF) {
  25.                 cout << "История операций пуста\n\n";
  26.                 log2.close();
  27.             }
  28.             else {  // вывод истории операций
  29.                 while (!log2.eof()) {
  30.                     getline(log2, str1);
  31.                     cout << str1 << endl;
  32.                 }
  33.                 log2.close();
  34.             }
  35.             cout << "->Для очистки истории операций нажмите пробел\n->Для продолжения работы нажмите любую клавишу\n->Для выхода в главное меню нажмите ESC\n";
  36.             key = _getch();
  37.             if (key == 32) {
  38.                 log1.open("log.txt", ios::trunc); log1.close(); std::system("cls"); cout << "Очистка прошла успешно!\n\n"; // очистка истории операций
  39.                 cout << "Для выхода в главное меню нажмите ESC\n";
  40.                 while (key != 27)
  41.                 key = _getch();
  42.             }
  43.         }
  44.  
  45.         std::system("cls");
  46.         while (key != 27) {
  47.             cout << "Введите 1-е число: ";
  48.             do {  // цикл проверки ввода
  49.                 cin >> str1;
  50.                 for (int i = 0; i < str1.size(); i++) {
  51.                     if (str1[i] >= '0' && str1[i] <= '9') {
  52.                         check = true;
  53.                     }
  54.                     else {
  55.                         check = false;
  56.                         cout << "Неверный ввод! Введите новое число: \n";
  57.                         break;
  58.                     }
  59.                 }
  60.             } while (check != 1);
  61.             GiantInteger number(str1);
  62.  
  63.             do {
  64.                 std::system("cls");
  65.                 cout << "1-е число: " << number << endl;
  66.                 cout << "Введите 2-e число: ";
  67.                 do {  // цикл проверки ввода
  68.                     cin >> str2;
  69.                     for (int i = 0; i < str2.size(); i++) {
  70.                         if (str2[i] >= '0' && str2[i] <= '9') {
  71.                             check = true;
  72.                         }
  73.                         else {
  74.                             check = false;
  75.                             cout << "Неверный ввод! Введите новое число: \n";
  76.                             break;
  77.                         }
  78.                     }
  79.                 } while (check != 1);
  80.                 GiantInteger number2(str2);
  81.                 std::system("cls");
  82.                 cout << "1-е число: " << number << endl << "2-е число: " << number2 << endl;
  83.  
  84.                 cout << "Выберите операцию: \n1)Сложение\n2)Вычитание\n3)Умножение\n4)Деление\n";
  85.                 do {
  86.                     cin >> a;
  87.                     if ((a.size() == 1) && (a[0] == '1' || a[0] == '2' || a[0] == '3' || a[0] == '4')) check = true; // проверка ввода
  88.                     else check = false;
  89.                     if (check) { // запись времени операции в файл
  90.                         time_t rawtime;
  91.                         time(&rawtime);
  92.                         log1.open("log.txt", ios::app);
  93.                         log1 << ctime(&rawtime);
  94.                         log1.close();
  95.                     }
  96.                     switch (atoi(a.c_str())) {
  97.                     case 1: {std::system("cls");cout << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Сложение\n" << "Результат: " << number + number2 << endl << endl;
  98.                         log1.open("log.txt", ios::app); log1 << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Сложение\n" << "Результат: " << number + number2 << endl << endl;
  99.                         number = number + number2; break;}
  100.                     case 2: {std::system("cls");cout << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Вычитание\n" << "Результат: " << number - number2 << endl << endl;
  101.                         log1.open("log.txt", ios::app); log1 << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Вычитание\n" << "Результат: " << number - number2 << endl << endl;
  102.                         number = number - number2; break;}
  103.                     case 3: {std::system("cls");cout << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Умножение\n" << "Результат: " << number * number2 << endl << endl;
  104.                         log1.open("log.txt", ios::app); log1 << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Умножение\n" << "Результат: " << number * number2 << endl << endl;
  105.                         number = number * number2; break;}
  106.                     case 4: {
  107.                         std::system("cls");
  108.                         if (number2 != 0) {
  109.                             cout << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Деление\n" << "Результат: " << number / number2 << endl;
  110.                             log1.open("log.txt", ios::app); log1 << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Деление\n" << "Результат: " << number / number2 << endl << endl; log1.close();
  111.                             number = number / number2; break;
  112.                         }
  113.                         else {
  114.                             cout << "На ноль делить нельзя!\nВы можете продолжить работу с первым числом или ввести новые\n\n";
  115.                             log1.open("log.txt", ios::app); log1 << "1-е число: " << number << "\n2-е число: " << number2 << "\nОперация: Деление\n" << "Результат: Ошибка! Делить на ноль нельзя!\n\n";
  116.                             break;
  117.                         }
  118.                     }
  119.                     default: {cout << "Неправильный ввод!\n";break;}
  120.  
  121.                     }
  122.                     log1.close();
  123.                 } while (!check);
  124.                 cout << "->Для продолжения работы с итоговым числом нажмите любую клавишу\n->Для работы с новыми числами нажмите пробел\n->Для выхода в главное меню нажмите ESC";
  125.                 key = _getch();
  126.                 if (key == 27) break;
  127.             } while (key != 32);
  128.             std::system("cls");
  129.         }
  130.     }
  131. }
Add Comment
Please, Sign In to add comment