Skip to content

Commit 9f634ce

Browse files
authored
Merge pull request #26 from yusuf601/main
fix: bug pada undo redo
2 parents fef38c2 + 62860a8 commit 9f634ce

File tree

1 file changed

+25
-29
lines changed

1 file changed

+25
-29
lines changed

case_study/advanced/undo_redo.cpp

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,13 @@ class Stack{
7777
*
7878
* @return string yang berisi operasi apa saja pada sebuah string
7979
*/
80-
std::string get_operation(const std::string& text){
80+
Mode get_operation(const std::string& text){
8181
std::string ans = "";
8282
std::istringstream iss(text);
8383
std::string cmd;
8484
iss >> cmd;
85-
Mode m = classifyInput(cmd);
86-
return cmd;
85+
return classifyInput(cmd);
86+
8787
}
8888
/**
8989
* @brief fungsi untuk melakukan parser terhadap string,dengan kata
@@ -139,8 +139,8 @@ class Stack{
139139
if(m == write){
140140
push_arr(text);
141141
}else{
142-
std::string operasi = get_operation(text);
143-
std::cout << "Error: " << operasi << " not available" << std::endl;
142+
Mode m = get_operation(text);
143+
std::cout << "Error: " << m << " not available" << std::endl;
144144
}
145145
}
146146
/**
@@ -151,20 +151,15 @@ class Stack{
151151
* 1.push top pada arr ke temp_stack
152152
* 2.pop element top pada arr
153153
*/
154-
void Undo(const std::string& text){
155-
Mode m = classifyInput(top());
156-
if(m == undo){
154+
void Undo(){
157155
if(is_empty()){
158156
std::runtime_error("Queue is empty");
159157
}else{
160158
push_temp();
161159
pop_arr();
162160
}
163-
}else{
164-
std::string operasi = get_operation(top());
165-
}
166161
}
167-
void Redo(){
162+
void Redo(){
168163
if(temp_is_empty()){
169164
throw std::runtime_error("tidak ada perubahan terbaru");
170165
}else{
@@ -185,22 +180,21 @@ class Stack{
185180
std::cin >> text;
186181
return text;
187182
}
188-
void menu(const std::string& text){
189-
std::string operation = get_operation(text);
190-
Mode m = classifyInput(text);
191-
if(m == write){
192-
Write(text);
193-
}else if(m == read){
194-
Read();
195-
}else if(m == undo){
196-
Undo(text);
197-
}else if(m == redo){
198-
Redo();
199-
}else{
200-
std::string operasi = get_operation(top());
201-
std::cout << "Error: " << operasi << " not available" << std::endl;
202-
}
203-
}
183+
// void menu(const std::string& text){
184+
// Mode m = get_operation(top());
185+
// if(m == write){
186+
// Write(text);
187+
// }else if(m == read){
188+
// Read();
189+
// }else if(m == undo){
190+
// Undo(text);
191+
// }else if(m == redo){
192+
// Redo();
193+
// }else{
194+
// Mode m = get_operation(top());
195+
// std::cout << "Error: " << m << " not available" << std::endl;
196+
// }
197+
// }
204198
};
205199
int main(){
206200
Stack stack1(1024); //
@@ -209,8 +203,10 @@ int main(){
209203
stack1.Write("write sayang");
210204
stack1.Write("write kamu");
211205
stack1.Read(); // aku dia sayang kamu
212-
stack1.Undo("undo"); // aku dia sayang
206+
stack1.Undo(); // aku dia sayang ->membuang perubahan terbaru dari state
213207
stack1.Read();
208+
stack1.Redo();
209+
stack1.Read(); //aku dia sayang kamu(balik ke state awal)
214210
std::cin.get();
215211
return 0;
216212
}

0 commit comments

Comments
 (0)