Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 25 additions & 29 deletions case_study/advanced/undo_redo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,13 @@ class Stack{
*
* @return string yang berisi operasi apa saja pada sebuah string
*/
std::string get_operation(const std::string& text){
Mode get_operation(const std::string& text){
std::string ans = "";
std::istringstream iss(text);
std::string cmd;
iss >> cmd;
Mode m = classifyInput(cmd);
return cmd;
return classifyInput(cmd);

}
/**
* @brief fungsi untuk melakukan parser terhadap string,dengan kata
Expand Down Expand Up @@ -139,8 +139,8 @@ class Stack{
if(m == write){
push_arr(text);
}else{
std::string operasi = get_operation(text);
std::cout << "Error: " << operasi << " not available" << std::endl;
Mode m = get_operation(text);
std::cout << "Error: " << m << " not available" << std::endl;
}
}
/**
Expand All @@ -151,20 +151,15 @@ class Stack{
* 1.push top pada arr ke temp_stack
* 2.pop element top pada arr
*/
void Undo(const std::string& text){
Mode m = classifyInput(top());
if(m == undo){
void Undo(){
if(is_empty()){
std::runtime_error("Queue is empty");
}else{
push_temp();
pop_arr();
}
}else{
std::string operasi = get_operation(top());
}
}
void Redo(){
void Redo(){
if(temp_is_empty()){
throw std::runtime_error("tidak ada perubahan terbaru");
}else{
Expand All @@ -185,22 +180,21 @@ class Stack{
std::cin >> text;
return text;
}
void menu(const std::string& text){
std::string operation = get_operation(text);
Mode m = classifyInput(text);
if(m == write){
Write(text);
}else if(m == read){
Read();
}else if(m == undo){
Undo(text);
}else if(m == redo){
Redo();
}else{
std::string operasi = get_operation(top());
std::cout << "Error: " << operasi << " not available" << std::endl;
}
}
// void menu(const std::string& text){
// Mode m = get_operation(top());
// if(m == write){
// Write(text);
// }else if(m == read){
// Read();
// }else if(m == undo){
// Undo(text);
// }else if(m == redo){
// Redo();
// }else{
// Mode m = get_operation(top());
// std::cout << "Error: " << m << " not available" << std::endl;
// }
// }
};
int main(){
Stack stack1(1024); //
Expand All @@ -209,8 +203,10 @@ int main(){
stack1.Write("write sayang");
stack1.Write("write kamu");
stack1.Read(); // aku dia sayang kamu
stack1.Undo("undo"); // aku dia sayang
stack1.Undo(); // aku dia sayang ->membuang perubahan terbaru dari state
stack1.Read();
stack1.Redo();
stack1.Read(); //aku dia sayang kamu(balik ke state awal)
std::cin.get();
return 0;
}
Loading