Оновлений код програми з новими функціями:
Збереження історії в файл: Збереження історії обчислень у текстовий файл і завантаження її при запуску програми.
Підтримка змінних у виразах: Користувач може задавати змінні (x = 5) і використовувати їх у наступних виразах (x + 3).
importjava.io.*;importjava.util.*;importjavax.script.*;publicclassMain{publicstaticvoidmain(String[] args){Scanner scanner =newScanner(System.in);boolean continueCalculating =true;ArrayList<String> history =loadHistoryFromFile("history.txt");// Завантаження історії з файлуMap<String,Double> variables =newHashMap<>();// Змінніwhile(continueCalculating){System.out.println("Оберіть режим:");System.out.println("1. Простий калькулятор");System.out.println("2. Обчислити вираз (підтримуються змінні, наприклад, x = 5, x + 3)");System.out.println("3. Переглянути історію");System.out.println("4. Видалити записи з історії");System.out.println("5. Вихід");int choice = scanner.nextInt();
scanner.nextLine();// Очищення залишку вводу
// Перегляд історіїpublicstaticvoidprintHistory(ArrayList<String> history){if(history.isEmpty()){System.out.println("Історія порожня.");}else{System.out.println("Історія обчислень:");for(int i =0; i < history.size(); i++){System.out.println((i +1)+". "+ history.get(i));}}}// Видалення записів з історіїpublicstaticvoidhandleHistoryDeletion(Scanner scanner,ArrayList<String> history){System.out.println("Оберіть дію:");System.out.println("1. Очистити всю історію");System.out.println("2. Видалити запис за номером");int choice = scanner.nextInt();
scanner.nextLine();// Очищення залишку вводуswitch(choice){case1:
history.clear();System.out.println("Історію очищено.");break;case2:printHistory(history);System.out.println("Введіть номер запису для видалення:");int index = scanner.nextInt()-1;if(index >=0&& index < history.size()){
history.remove(index);System.out.println("Запис видалено.");}else{System.out.println("Невірний номер запису.");}break;default:System.out.println("Невірний вибір.");}}
// Збереження історії в файлpublicstaticvoidsaveHistoryToFile(String filename,ArrayList<String> history){try(BufferedWriter writer =newBufferedWriter(newFileWriter(filename))){for(String record : history){
writer.write(record);
writer.newLine();}}catch(IOException e){System.out.println("Помилка збереження історії в файл.");}}// Завантаження історії з файлуpublicstaticArrayList<String>loadHistoryFromFile(String filename){ArrayList<String> history =newArrayList<>();try(BufferedReader reader =newBufferedReader(newFileReader(filename))){String line;while((line = reader.readLine())!=null){
history.add(line);}}catch(IOException e){System.out.println("Історію не вдалося завантажити.");}return history;}}
Оновлений код програми з новими функціями:
Видалення записів з історії
Робота з великим числом операндів у виразі
importjava.util.ArrayList;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){Scanner scanner =newScanner(System.in);boolean continueCalculating =true;ArrayList<String> history =newArrayList<>();// Збереження історії обчисленьwhile(continueCalculating){System.out.println("Оберіть режим:");System.out.println("1. Простий калькулятор");System.out.println("2. Обчислити вираз (наприклад, 1 + 2 * 3)");System.out.println("3. Переглянути історію");System.out.println("4. Видалити записи з історії");System.out.println("5. Вихід");int choice = scanner.nextInt();
scanner.nextLine();// Очищення залишку від вводуswitch(choice){case1:// Простий калькуляторhandleSimpleCalculator(scanner, history);break;case2:// Обчислення складного виразуhandleExpression(scanner, history);break;case3:// Перегляд історіїprintHistory(history);break;case4:// Видалення записів з історіїhandleHistoryDeletion(scanner, history);break;case5:// Вихід
continueCalculating =false;break;default:System.out.println("Невірний вибір. Спробуйте ще раз.");}}System.out.println("Дякую за використання калькулятора. До побачення!");}
// Видалення історіїpublicstaticvoidhandleHistoryDeletion(Scanner scanner,ArrayList<String> history){System.out.println("Оберіть дію:");System.out.println("1. Очистити всю історію");System.out.println("2. Видалити запис за номером");int choice = scanner.nextInt();
scanner.nextLine();// Очищення залишку від вводуswitch(choice){case1:
history.clear();System.out.println("Історію очищено.");break;case2:printHistory(history);System.out.println("Введіть номер запису для видалення:");int index = scanner.nextInt()-1;if(index >=0&& index < history.size()){
history.remove(index);System.out.println("Запис видалено.");}else{System.out.println("Невірний номер запису.");}break;default:System.out.println("Невірний вибір.");}}}
Оновлений код програми, який реалізує нові функції:
Додана операція піднесення до степеня (^).
Збереження історії обчислень, яку можна переглянути після кожної операції.
importjava.util.ArrayList;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){Scanner scanner =newScanner(System.in);boolean continueCalculating =true;ArrayList<String> history =newArrayList<>();// Збереження історії обчисленьwhile(continueCalculating){System.out.println("Введіть перше число:");double number1 = scanner.nextDouble();System.out.println("Введіть друге число:");double number2 = scanner.nextDouble();System.out.println("Введіть операцію (+, -, *, /, %, ^):");char operation = scanner.next().charAt(0);double result =0;boolean validOperation =true;switch(operation){case'+':
result = number1 + number2;break;case'-':
result = number1 - number2;break;case'*':
result = number1 * number2;break;case'/':if(number2 !=0){
result = number1 / number2;}else{System.out.println("Помилка: Ділення на нуль неможливе.");
validOperation =false;}break;
if(validOperation){System.out.println("Результат: "+ result);}System.out.println("Хочете виконати ще одне обчислення? (так/ні):");String userResponse = scanner.next().toLowerCase();if(!userResponse.equals("так")){
continueCalculating =false;}}System.out.println("Дякую за використання калькулятора. До побачення!");}}