C# ONLY C# ONLY C# ONLY
In this assignment you will implement the undo feature for a simple
calculator. The undo feature must be implemented using a generic or
template-based Stack data structure. You may utilize language
supplied libraries (e.g. java.util.stack) or a stack implementation
of your own design. No third-party downloads or software installs
are allowed. The undo feature must allow for an unlimited number of
undo operations. If the user attempts to perform an undo operation
and the stack is empty, then a message must be displayed indicating
that there are no commands to undo. The calculator portion of the
assignment must function as follows. The calculator must be
implemented in a stand-alone class called ‘Calculator’. The
calculator must support only the following operations: addition
(+), subtraction (-), multiplication (*), and division (/). The
calculator must support whole and real numbers. The calculator must
support the following commands: UNDO, CLEAR, EXIT UNDO: Ignores the
prior calculation and restores state as if the calculation never
occurred. If there are no prior calculations to ignore, then
display the message “UNDO IS NOT AVAILABLE” and request the user to
enter a command or calculation request. CLEAR: Resets the
calculator to the initial state, returns the Running Total to 0,
and clears the undo stack. EXIT: Terminates the program without
producing any results. If a command does not start with one of the
preceding three commands, then the input is expected to be a
calculation request in the following format: The user will supply
input into the calculator in the following format: decimal-number
operation decimal-number decimal-number: decimal-integer-literal
real-literal real-literal: decimal-digits . decimal-digits
decimal-integer-literal: decimal-digits decimal-digits:
decimal-digit decimal-digits decimal-digit decimal-digit: one of 0
1 2 3 4 5 6 7 8 9 operation: one of + - * / Any input that does no
conform to this input format should be rejected with an error
message indicating that the input is invalid. The calculator must
maintain a running total of all the operations. The running total
is the result of the last operation added the running total. For
example, if the calculator is presented with the following input:
10 + 5 Sum: 15; Running Total : 15 20 – 5 Difference: 15; Running
Total: 30 2 * 3 Product: 6; Running Total: 36 UNDO Running Total:
30 CLEAR Running Total: 0 EXIT The Memento Design Pattern Memento
design pattern is a behavioral design pattern and is used when the
state of an object needs to be saved in case it needs to be acted
upon in the future. The pattern consists of three objects:
Originator, Memento, and Caretake Originator - the object that
knows how to save itself. 1. Creates a memento containing a
snapshot of its current internal state. 2. Uses the memento to
restore its internal state. 3. In this program, the Calculator
class is the Originator of the memento object. Caretaker - the
object that knows why and when the Originator needs to save and
restore itself. 1. Is responsible for the memento's safekeeping. 2.
Never operates on or examines the contents of a memento. 3. In this
assignment, the Caretaker is a stack data structure that will
contain Memento objects provided by the Calculator class. Memento:
stores internal state of the Originator object. The memento may
store as much or as little of the originator's internal state as
necessary at its originator's discretion. 1. Stores internal state
of the Originator object. The memento may store as much or as
little of the originator's internal state as necessary at its
originator's discretion. 2. Protect against access by objects of
other than the originator
import java.util.List;
import java.util.ArrayList;
import javax.swing.event.ChangeEvent;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.println("Simple Calculator");
System.out.println("\nHere are your options:");
System.out.println("\n1.
Addition");
System.out.println("2.
Subtraction");
System.out.println("3.
Division");
System.out.println("4.
Multiplication");
System.out.print("\nWhat would you like to do?: ");
int choice =
kb.nextInt();
System.out.println();
if (choice == 1){
addition();
}
else if (choice ==
2){
subtraction();
}
else if (choice ==
3){
division();
}
else if (choice ==
4){
multiplication();
}
System.out.println();
kb.close();
}
public static void addition(){
int nOne, nTwo;
Scanner kb = new
Scanner(System.in);
System.out.println("Addition");
System.out.print("\nFirst Number: ");
nOne = kb.nextInt();
System.out.print("\nSecond Number: ");
nTwo = kb.nextInt();
kb.close();
System.out.println("\nSum: " + nOne + " + " + nTwo + " = " + (nOne
+ nTwo));
}
public static void subtraction(){
int nOne, nTwo;
Scanner kb = new
Scanner(System.in);
System.out.println("Subtraction");
System.out.print("\nFirst Number: ");
nOne = kb.nextInt();
System.out.print("\nSecond Number: ");
nTwo = kb.nextInt();
kb.close();
System.out.println("\nSum: " + nOne + " - " + nTwo + " = " + (nOne
- nTwo));
}
public static void division(){
int nOne, nTwo;
Scanner kb = new
Scanner(System.in);
System.out.println("Division");
System.out.print("\nFirst Number: ");
nOne = kb.nextInt();
System.out.print("\nSecond Number: ");
nTwo = kb.nextInt();
kb.close();
System.out.println("\nSum: " + nOne + " / " + nTwo + " = " + (nOne
/ nTwo));
}
public static void multiplication(){
int nOne, nTwo;
Scanner kb = new
Scanner(System.in);
System.out.println("Multiplication");
System.out.print("\nFirst Number: ");
nOne = kb.nextInt();
System.out.print("\nSecond Number: ");
nTwo = kb.nextInt();
kb.close();
System.out.println("\nSum: " + nOne + " x " + nTwo + " = " + (nOne
* nTwo));
}
}
public class UndoRedomanager {
private Node currentIndex = null;
private Node parentNode = new Node();
public UndoRedomanager (){
currentIndex = parentNode;
}
public UndoRedomanager (UndoRedomanager manager){
this();
currentIndex = manager.currentIndex;
}
public void clear(){
currentIndex = parentNode;
}
public void addChangeable(Changeable changeable){
Node node = new Node(changeable);
currentIndex.right = node;
node.left = currentIndex;
currentIndex = node;
}
public boolean canUndo(){
return currentIndex != parentNode;
}
public boolean canRedo(){
return currentIndex.right != null;
}
public void undo(){
if ( !canUndo() ){
throw new IllegalStateException("Cannot undo. Index is out of range.");
}
currentIndex.changeable.undo();
moveLeft();
}
private void moveLeft(){
if ( currentIndex.left == null ){
throw new IllegalStateException("Internal index set to null.");
}
currentIndex = currentIndex.left;
}
private void moveRight(){
if ( currentIndex.right == null ){
throw new IllegalStateException("Internal index set to null.");
}
currentIndex = currentIndex.right;
}
public void redo(){
if ( !canRedo() ){
throw new IllegalStateException("Cannot redo. Index is out of range.");
}
moveRight();
currentIndex.changeable.redo();
}
private class Node {
private Node left = null;
private Node right = null;
private final Changeable changeable;
public Node(Changeable c){
changeable = c;
}
public Node(){
changeable = null;
}
}
}
C# ONLY C# ONLY C# ONLY In this assignment you will implement the undo feature for a simple calculator. The undo feature...
You are to write a Java program that emulates an “undo” operation in programs like Word processors. You will need to use the proper data structures as you see fit. Specifically, you will create a data type called, DocumentBuffer, that acts as edit buffer & keeps a list of Line data type. To keep it simple, DocumentBuffer will have these editing operations: add a Line and remove a Line. DocumentBuffer will store its state during any edits. It will need...
You are to write a program that emulates an “undo” operation in programs like Word processors. 2. You will need to use the proper data stuctures as you see fit. 3. Specifically, you will create a data type called, DocumentBuffer, that acts as edit buffer & keeps a list of Line data type. 4. To keep it simple, DocumentBuffer will have these editing operations: add a Line and remove a Line. 5. DocumentBuffer will store its state during any edits....
For this project you will implement a simple calculator. Your calculator is going to parse infix algebraic expressions, create the corresponding postfix expressions and then evaluate the postfix expressions. The operators it recognizes are: +, -, * and /. The operands are integers. Your program will either evaluate individual expressions or read from an input file that contains a sequence of infix expressions (one expression per line). When reading from an input file, the output will consist of two files:...
In this lab you will code a simple calculator. It need not be anything overly fancy, but it is up to you to take it as far as you want. You will be creating this program in three small sections. You have the menu, the performance of the basic arithmetic operations (Addition, Subtraction Multiplication, and Division), and the looping. You may want to get the switch menu working first, and then fill in the code for these four arithmetic operations...
C++ ONLY This is your first ever program using object oriented methodology. In this assignment you will need to instantiate (create) object(s) and invoke their member functions to perform different tasks. The program is to keep track of customer orders and to create reports as needed. At minimum you will need several objects to be instantiated throughout the program such as: An OrderProcessor object Order objects (stored in an array) Let’s get to class design now. Class Design class Order:...
Overview: You will be writing classes that implement a playlist simulation for a music streaming app.The Playlist class will contain a dynamic array of Song objects, and the Song class contains several pieces of information about a song. You will need to: 1) Finish the writing of two classes: Song and Playlist. The full header file for the Song class has been provided in a file called Song.h. 2) Write a main program (filename menu.cpp) that creates a single Playlist...
This C++ Program consists of: operator overloading, as well as experience with managing dynamic memory allocation inside a class. Task One common limitation of programming languages is that the built-in types are limited to smaller finite ranges of storage. For instance, the built-in int type in C++ is 4 bytes in most systems today, allowing for about 4 billion different numbers. The regular int splits this range between positive and negative numbers, but even an unsigned int (assuming 4 bytes)...
Can you please help me with creating this Java Code using the following pseudocode? Make Change Calculator (100 points + 5 ex.cr.) 2019 In this program (closely related to the change calculator done as the prior assignment) you will make “change for a dollar” using the most efficient set of coins possible. In Part A you will give the fewest quarters, dimes, nickels, and pennies possible (i.e., without regard to any ‘limits’ on coin counts), but in Part B you...
The following guidelines outline the basic template for a robot vacuum cleaner game. The game must be implemented in c programming language. It mimics a robotic vacuum cleaner. The code must only use the following libraries: #include <math.h> #include <stdlib.h> #include <string.h> #include <limits.h> and any .graphics and .timers libraries. The guidelines are outlined as follows: Terminal Set-up: you may assume that the terminal will be quite large, for example, on the order of 150×50, or more. Status Display: The...
could you please help me with this problem, also I
need a little text so I can understand how you solved the
problem?
import java.io.File; import java.util.Scanner; /** *
This program lists the files in a directory specified by * the
user. The user is asked to type in a directory name. * If the name
entered by the user is not a directory, a * message is printed and
the program ends. */ public class DirectoryList { public static...