From 8062c71fe6ccbb1de9514c3d605e6ec9a85e6391 Mon Sep 17 00:00:00 2001 From: Muh Yusuf Date: Sun, 7 Sep 2025 19:05:48 +0700 Subject: [PATCH] refactor: menghapus get_operation --- case_study/advanced/m | Bin 0 -> 46576 bytes case_study/advanced/undo_redo.cpp | 37 ++++-------------------------- 2 files changed, 4 insertions(+), 33 deletions(-) create mode 100755 case_study/advanced/m diff --git a/case_study/advanced/m b/case_study/advanced/m new file mode 100755 index 0000000000000000000000000000000000000000..4ff131167b9e027e8d12d9ff7cb81a015d522ebe GIT binary patch literal 46576 zcmeHw4SbZvwfD10fT$oVqQ#HaRY5@{<`V*n24P{NAdv*c&nL@fA*)F?ZgwG9u+b1r zj8s%?@uRotmD;qgy-i!%rdBj4h16?pY^}|$TGtkJVz@T7R8x!W`#)!9cAx#Svi82e z`+I*pusP41IdkUBnKNh3%(MHHUPEg+(oORwncuu69(JjAcPpsNWr2*!wX1UNs+@*) zBEY4g)+fnGp9;k<5jv1ZmxKQrMq;@}RW1=uRrDHC9dr?-&(tPLB|`^eWA*8Bm2U-W z=srU5Rp}&rf?Pb1_z^`qK4ZyQ)V+ZJ$&x@gQ4U za>Ys`tHtOe+&FybqWj7Ckh&?~Y&-d_@2+|H-#@Iq;^QZ?&k$XgFimvi}RZNd4E#%F43@)zF`H{^u^BB3j4P+-Pj)yf+T9bD z8jjUQaqk!IYq00GplX}UUVax-(2%n4bS%A+%eCS$)&tiO*;N!xFuFLSbobL={Dc}|A{z||~b-xPmI()9j zXUg36IVXMFv+Lv8(?TWp&)@u{>)OX2tXlBGN#7f6{L|9MN1lD@7q`9f&6cxY8b7}L z-PhkQ{#)@aUwio7`~T~wPd@XTyNUQ@OW(~~KmD-x^2P6|W+j0V7~`ZQtYLf(29gT@6Bt%1ym4%5{E{^M zkA*>|;`5C(^lzPD7-yxB^XI^);&U(!zItM6`Z5fFRD5=&(ZijPB^CW?Y3glHgMT3n zz5#<5J_lng*YjMh_2SfT!X=HBEp0A&s0*q``kJjXb?@Ua9Kc zcD!MLRnm3W_|){Tr0K_9Y2+zM)86~j^vi{5^e{V(KFKFLlB73`uceX4hVhcBz2xUp z@i{*Y{!3}}^Fzp=ihnoiJvD-u*~S;4 z2cmDhLE;xFK7WBcglA`qtT_t*N8A&>ha54kl@b^;pg6);EBQlV5WaeaM7*!${14a(;SD8^$~JsT zKlW=R{bP#He)u2eQ!Wv=DE#*oeV?K)RQ&%<$!VvF4A(Y=|BljIwNmiSGTT@SKTP}w zmPo`Dg%2w}VO8%v3ZD;tEdNr8cvs;sQ|)R|d{CUP9r#Q1eOJl!3<-?=s$NH#L}**8 zR{i3*TH-4d{SB&LDrmyS^@s$SC@)e)Q75^?}S7$5yUzPog zC_Qgf_-`vcI8;AsyPc-S-2eqPxC$jON}*WRzZwuvDtssWKjEug5^|sRpyKdKb#YYEJ3l#m^O8yaLKYoS(hLWdI_18@b zZz}pmWhe6?2VH;4mhCE2hC}ffU#7XX-rrz01>J$5X&PpE)iSfj8}P36H3hwas$~o7 z{0-hJ_v$*Y%uAhf?G=|-2IrWjr@6VHprCNIyUFJP&w#ICZMmm1SWw`pbqCB~!0ih* zm3y3(Zv1i1uJbmm4c0o>8RoT>!NPpg4Autx>rII^y@7x~P;t2jxmO%H^Ab;;*BxNq znaEa9VlFd1wO-H7N*rf>ea5oP1uu6~lW%QSwSkP49-RW z)cYFTK`$vV0~Hk%P#fKiZjUdx!C9XflR0LkS?^!xg;dZ_hD?0TnO0xo4Y-@U=p0r_ z9gHiTwXHx#ku*#{EYs_*FRwDI@=a&u9CO9x>D7n+sw^?93QVUHb=1^VtdouO*EKnP zTx+qnp{6cX#m@9~&d$&X3JR&u{0(S9$P+Aw%AL-2Rc2+WNh4^DKd{~%s4;yo4R_Fw z5$9f;S+^GCleKwKjXz`4AhTCPoK=>Ai(nJ2@ipBPYVZV|84o}n%>i#?o!jGu_UdY2 ztu&mK*%Wzv4N^@7MS)O5&{yx3-e+M!=5;PAl+NeKT^H+KNh{q>hQn%M;b-wTC2Ioy zhM;N$S$oCe6_x%Tcce2AM$-b4)2#Jj&V#xtJaEuOG&a#~YrR2i)Ob^kY&n5h zhBs!*1efw@JxY4Iw64ru>0Hj!2TsdQr zc_EfkMwZqv;IC*ZGm|2)LK9Z)bkeXf%V8GF8@&zn{u;z|Y$@na*a(6*3RAoY1lPEI zb!e`yGT+4i4EwftjjsWoRz(FFsIA0X--yU0Q74}=yhM*hqpb`okA_>a+YnkLM;56j zcuy5ViV{;9%aMD3cp<8>VZC(vz9Ni{OjVG=zb%*UEd#GZk)FrjxZyKJdK43Q;3LcYp$seLYKFa4Ia5NVeZS!Cb$=C9CGArNb34f zkfi2iK!)>idS`c}-Ux9~rFNOnB>I#^%D~J^>)p*}lkZk*!cJa`nn!)7RAK zM<_3cTd@a5@R|KihW%8E?zXHeGMU$kQ>ygHy!mIC@~8!MzItC!u8cBi0kPl(uv0I5 zGq5fme?0HXrE7++JQbVDVBpiO_A(F6;PB^apH$~xi!F`MwkMIWcw4%fqz)?*4aS9qI3^_Z(^mj)XWp4yvvf;Q^C^|bUh5Ej6{A)h93wUtxv#+n8M zp4xzl)G-?)Si9BB*!o5WjT;PaMU1%2O6-Vz1Vz))H+rqpONwI1b$`$7o6~-kC^Noe8RxP-++$_i|%9|UXH`kIE zms6zbS3C;~thw0O%EFV_EIgGZI0jGN=^tUn;6s1M;YsT;jLE_yH^PlIj>BJ~8IS$H zv7n)nS$G0_JpZ*Zoek;#*?)3dj_NpVl6>au0IK4g4cOs4-Y5c&E*si5L*>(!-ejK- zJFLeU7b@Jg`@Vu5<6{h`O7GHHyhcsPy&TM3>mPB7Lg zTqCE)8|zeh!%N?TJjWVsI?egH#{DY&oA2F>oyal9H&nWe^K*EMj} zu``-wJdZS8`g;{X^5vk1*0@@>NT~4xg(`htJU&;Yx8E!APzFC+mnp;Ovf#1B9lg3O zc)j;dnLQS~eilIZUJL#Ugiu$X1%Hl40`^<*(=GS`3tm49pzJ{l{yYnP*n&Ubg14)7 z)3)zf7QC@lCa`^uzK&hF7CbsUdf6>_Y#m3hDHc2)wL~w61&@x8Uehgj>H~e{Tks^4 zzDg~47-;k=v*7V)AbPnhco<~#s<7ZOFrwEg3tm5ipv-Cueqxl`FlsG$y9M89!7G#H z+-3{@L<@b31yA1-(O0_#f09N5ZnfY~w&1s0@Sn5byDWJ9tbww-EqMK`hwwcXynfb0 z_+AVCbV8`B&w~HFMgsO*@cLN~We-^JXIkh7EqMLxgR;XG{8S6Qu;8az@FN!dxfcAW z1wYe*KYDvq14lJ*R0Bsfa8v_FHE>h||G#VCuM@xUk*oDUuB&s*ZWCYGZR-nWMFw20 zdvc%SrbkMi2RbtC1^k_OMj7rXT}ydG;Rvp2&r+I}3PS^&ev;C(L>TJh^baUaOM{^v zPJf5ev?Lhn;`F~$nwA1XTRHtOrD+K;)WYfeDNUjOP$Q@BrZg?BVFjT?m zTPaPU|4g!ftYp~ zrR|gsbNW(B(-LrKfYb9RO`-l!AEyf`O(FhJ52w$gG==s!P$Q?0r8F%qhpIW9MQIAGvs3q5Duir{ASCh3rEP zPXCe86six|IsJP|e}U2lr+-c9GblasaU??aQt;p99WUMJ>iDCpb^l03m9wC);1{kf z^WOwbZK4W0y3TMQyHwPPaTiD$GB-E#_p z{&uD>xs||-!>*1I*Y5W&aqS+>cG>p2UOF6{3>dcu&YjanJb97(Z3(yu4XzH$2pnsaa>MwS|@LgLTyc!5s$AbePadoya z=xB2ha!bi=SeCoCY#J2wRqSD1+_fb%DBb`I!XR@hMu2Nen`G2B!i;ti5bt97jw-H_ zRSe217<9DJ2tXCnWEH*Q;)E)C#YSC4uh@-DR3RC)k@34acM%YG$tqULD#Ee~1|4ms zvWge5h=QQo#j6;~)>dp6r|2rSiyLJXl2IFtH&j7DOqEqs$tr}bf14#X?i{k{EB*i1>0`YQ$QJ$U+Z98zx?s zd7blHuSGXsbtn=UHj->WyoWNKY#AMGy=YU+WIC6Py5{yzZ2K|{sgv_ux9=gVy5Tuj z$L@{+SI3q<6zFJs3V(-BOU6OjgW`DEMr9SFthHSP#LEs0*uS%JeoAh=q7NMvGk{#F zF#_UF;`V=zgxhuzkla*XPm$aRh*EGHu1;>!@E4MC=qK*Ysgj%O&FPXG0r4(;)9|E} zC09}YO=NSOZKO?CM_Ug-VlRZo!!jsC9R3J@HsBAO%4Red--D*{-g=9^^(j`&^yKXzg>rmMA~;2b3KIQn)%?b|q2Ir<3Tcs6;(6iF%_F^+KYa zIElJYV>cw~hD6&%wv=c)D({L()E$+m7ZOcDT+wLtwrjR3e@eSCv2KAs1y8gz)UR6H zEgry7>b8ZlhJDY_k9#)?V>~}w;ff(bYhglg$7Fcz;I!oTgH)>s- zC;bpWyhlt3Er;B)z7FS8VhB8j-lk5ZwsnU3#S+wwo9+%LX`!Eo9(}>MbyKe`l*eS` zuDcM03>!mtQBey+Ca-}2L$v1_W%@o8*5Q0~*ywaV+Tq;k>YP8FB->K*f6jqqJ0Jua zwiOkJF53g!H;>%KA}X z=gI-`6YvF-);$#@{-&^449R31pyac&d{V9vaW%p(u5?7)gNjhlPHuLeI35DW=6ag? zRe6Uj&x2jK_BltODoBlS)#)5@d5*z&Yf|I1(ayNt;V~4Sbk1LmUv7xs{*AhCAA0Fe zQ;~dyl2o#_&xT$d8K&-@3qo|*sYL%45wz}cSO*8kHAxT~rP(y7jdY~Lc|iP?sHdE|%es)qu49RL9v*XBq5~dLQ214J#UP zb&%I4&jpu$CE&_I>00|;wgK1N-N*|-dvUk6fo1WDPYnUtrBBWR|%iSRVr^DtFo7?gv;kDyF?G78c5p*hF!ACUak@h zLMW`N{QY0qbfGZI_^F5~P1;94M1?ldv1|vuqKP^h64JN~p$g<|S@|I}fd)Y<9Zn%y zK!WToPM~R4L;rn@g%ECf!6{tO*RfYT$~3Xsq#cEhM;DTFz!;~eVd9(bQv|;#I-jFI z;Iqg-wC=NueIP*rI0c@M#QMLWYYXv5%}*UPRzeU8zF*F-WEcXoa+v%abc8-yiEgCs zSq8dXQbr57YJ13!NhtM!!XXsi1PJDxp|Ds%LQoq!=mrCZLIc~rz0MDzg3yPYALF9h zIaUr&@pA|pYah4GISOYY=U45kDR^P)b3s6hzl`ON+?|VhN86M0xh$p&tF>!=cED|e zZ>R0T1-YTIdz}&6a1Q<&cRM3f<5pKnp4I~nGXyiSqyXp+AJ9VNlEY7AE@k_R-&D^?QPdl=4FBq2@mLn{fU0b_W=Fsuzx zyz>yEYRt-qpxXq8tmcQ?58w$j`e>J(gGzLK+myJtlKXg91?T?A#o)m*0-Zl%fS{I< zyBq*d(q@LJ96>ggjuJl|K#f19K|w}+{AcOYx#qoXMIbXoJCD;Ju`rUe@V;lE6Yrow zm@nXZxSaS9>4{Gpt)q_6GKHhT^du=$Ts9WEpvhP*LrPIcM_V!eQdg)Z%QZzTOKe7T zGJKVk$o2sXX5+Y;q!Mc=c9D$}*UEcRfVdc9CfRfqqV*}rMTA0X#wb=L9hQWFwt}5 zzntBjxslx+xh|SwZbdATB+JFHC3r|ZeNmjr#LGa8@_le8T}g##p6L=dL2&Wbe_O|Q z>wz-%U(xuBvt7abCYc!7!Znh0eb9$MPLTuoKkM2a<3&>)eVvF?4_= zP}Bj?I0dbbhJMTFP1}(*c(>8+{80F04ZXnhy0Uq0Ku7R>A2^|7pud@n@4|f-s_&n8 zN1NmW$`E1uT{HH&B713$5v7tLN7BxAu;_vCJx1tQEd)ChDhYk9>=&y*-{IU$k@{v# z;h_`254p>FT{HTrDZ^8NfEdfb2g|z-K+fnIsz-}7Q_!GSQped-V9L!z8x6`aaozHF zbo_x~Yk(2;pLXtl%wOWwcTtSzu9*Lq{&f_6gwK*($T))9VH=oKUnRZp!c$;QUq@Yl zz=Rx~wS0{KKOjYF{@@4y-GOy#>n0(!HwxwkN0C%vc;eIfG(U>Zp%JJY!r&vFYQp;3 zf%aJWg^dtR0L*SO+jS?+6)VHyA470Q&O<5Pv!0Jy52T4dddb9aeTh`U@da-BXn61t z8~_{uW)KjTj``PG0P_@N+!7Lkelv;eUM|?{>NH#tGK8L_5j+WuU=%tO`8r0sI29ch zn?yODPM)u&E;x{ba0n|dv^CL)g1()j!@0Nvg;c0@O18}Rtm@`mW8$_xnuAm5TXqNA z#-bf4r_Z1Ix7v>@h#R4Ksyn%Sqk1cWs&Qd2BO_^Ds_no}^yk5bPnT4Z+&L z76#c81zz9BQcuPotq1biUZegBc8LHE0}T2+=_ca(GBJT2MM4wVwIECM(OR*Ptt&V~ zV!7Gq9$p9v@gFpj$rI5~Mf7ky(kupSl9nye@j~{6I;j}@O4t(O4ynbk*hdqn+Kj=b z+*kT6YA8p<`SdkX4d+NTd>cTV{SK*t*oZ;M3CE;{QLJw*@o-tR{@8k%tc-dwESAL8 zzpfBmDU&+8Ul9$6vv`)L9TD=tyU{~V$kAhnze5tHVs~z>J~kdw=^y*cr1Y5(VkXx` z137F2=Sq#U6ylIxD^mNgToJ<(0TK4PvZ2pxH7@Tsq2Li59%M-p^fbjLj-m>Nb5|hij(Zou%3juCWeRc`i4AF{|J9Z zQj>_I!=DE$+;Q9wBZO01{5FJ=J_mKMlZ5qJ^d;qI`;}6N6Qu-bhqcFbd=qOAN!>xV zj)u@vELL)ozfba)=m=V$aEJ6^Mh#Eg{BN>j!=jrbBHHFbU&&ozxJ?rOLg&D`GPJIb zQ|ww`tXoiZjvT2}reDy@1tb+V*WQgKM#RUIXx%hu1kWJ?v56L!yzPcvo<>UW;*YkM z2E|CMM7VURD*_H;gC} z^MG8z)1ZW(K{sMkYhr-<5m{#pMZk)XY)m)-bWF|@ ziCX+TiiBb2vR@k%J)~b=h@!fD>@V2F4ctHETI1KZ(mtg=N5r>aDbORHxWUdl*W1M_ zvKWjtI^Stu%$p7u9o;13xoU?zwKMiclV(GU3s#E-E8)AJS$A>Ia6 z8z#^(=(thrTIta}DuM^M_&<_g&fjwWg#7TWyWcj%BP3*!Kcn#lOa8R}_hfDSmZ5>xgrYFcu|Ix7p*a|Mnt+#{5!Rix4vkSZ=T}vl;x;BOR<;p zKr{={E(GfDbmd@y>B@<*wQK-ERbtN@v_MR>H;#3nt7dzr(JE}N?a@uqlBM{HgLp58 zWN?mj=C--kg`7L($4UoCVHP<;9G{JLF`~-6e@0`w| zD#R$&i^VJF4a>xKPJEdN@q7mTxSit98zGevWKi59Gg;ifVFg4PLw&Mmd$20($E_j0 zh$8LIdr6pkA=2=kYpta`2u6B%g2EY+`9$7HkjQbGfW{hn zNj%O$4;JXb(}@`3_KScjNj50jkQknZ+F+Z`76maBu)utt7MPuzTBx>*i3~lA`dVdI z_h8A|f_BJR?&-L-P1GK5KhOh`nC;3T0gZ)7r+~W}$y<<#wbkNITt#)twK52{idR^b zlB$y*_N&d}UWf}TAthmNmK8)Rxs`*sAHW=lrqYTIK9nZa3&0lQ%MIl&aPAUM(8NGh zoXBg`wrc6NwukPlj*CXyE9Q>}Jv7^sT6!M|H9L`AeR zR!xmjiNB*D#B4`{SE06;n$!@deJsil)vw{ttFKy@kJ0%eR!S;2%+9!DERA;GImWYK7*M|inBFta#%9T5A;F;Q$lE+4hD zK5G-zRu-)whzVu!R)`(M$CGtk zIv43w@ye%E3jr=x+#J;Du)qRnflQH?s&c3dSXO_%s5UHU%Y}X7BJ_H%5j-316NoeigQuWu zpDUZa2Ox{sE1qIkNdY@8kot%Ri7u*W?M?wQwFYRk5?hc<;b4|x<4ibdG!RG1M#smp z#ZBy3)RXsJa$(dB{b;8K>eKBD|1!9WtkypUYC& z)6$M*H0;qgr$J&`or(3-OVGFKrNi{lp>@+hVn1V9&;6{I_XFZ(qEt*K-uVORvchbD z6isHs!_Mtre{vl6E|eLP`>-@lqGW*rRv;nJA>^cIqBuX}N0P;(ig6D^I*u0K3s3+k zSR(CX^X4jSD%y}fQNrQ@kwwuI^v0B*#HJ7 z2}XV2Bfi72EGF8SXw*!eF!6mHjm!q6M2?89av9OX))5*J28|V3%Kvl+%x8Tbocj3+`W}xeI#zCn5V)r>3}2<{ zbZ%F{D=Z!(hIXpAV8T_V2|Ac2eK6K}V9<0e^ z;F%s-FvZRg%D^{%lLz>w7IBD{eLT-Yl$G1X6Ug8Qumurp7zu;foCGq8tWflM;F4@- ziRHr!G|Ey#TKu(Alf;n#c>RFOkfvMMZ1yTFM5G z*MZj+%$sM;y@=i}dGWk?{KB&7GaT2M3xTL|%y&@6`3|#+Up$F47qz^LQkDb-zXnVb zs5ff)12X#t<4k@L(exRgMhHLNi$(9Ty6%SQ^bQa+xS`SeKOmB6;%zC8i_j!g0?DlU zm^Y8#USdpZn&*&o)7RJfJhcvAlVjSgp&5>g9l=^()2xeSSx0Qy z`vA8Ah5>V4k3@2?yD}M&zPnruxCpQcum&&)xEXK<;10l=KSUw}#1}hJqk#JX9r#ts zBJ#h0`~Mh;>;YX4_J8*SE&|NKQ>hxjsen5H7XjvA(r*O)PQV(Z_W*7t{9C98a4O(- zc2hpQZ$Drapa9$qn0pNH@Z;wLRsk*r+y*G9-H6HT*!nt%2&WGC zortrx0`3Rw0Xzs;iu|bvI|q=i0vrL{0cgi!Y(G|4`GAYCzNr8_2p9w`9*sn{0R|C7 z^aAbx90YtBa1?Mdc21^{y#ba2?f|SNIk5e+3hBv*B9UgmD!_K&>H8UU*=}87*qZIO z)5ed>-HJsM;ZMh>`GrX293ogW&Q4$|KE?P{JP$cx@5b@=#m7&%Y~pe2b6bo{PQCEF zBKn1eEPFlR^p_%$D)2KF9B;ofYvF{k*~@LHf_ZNQdKBa2cED(U)<(+a{6~SFf^l;w zF8{-5{!_qj$M~V`>1g?DIorS^OXD?_k7ma5aeF#Gqxjr|vU35WWrMP;1E?vG`3dCT zY|YPdgJ8k$^-q@*P6{6!?SFtoc{P%Abz@rTh!6`Rii&7a_m&6Utw& z@|Rf4XI&bte6ZTcCWtxX7jZOuqB67~e=6pVd~5#AF&Vm$UyOWwcO%w^ zRk8d&m7i{mg;jn!9pRNgMh*DWw_>9-ztUPh>x!s+eaPRB^4G`ZUmeX4BcJBtRDDSDt|<7hFru1OFyCfbmU);{0eLNtjn1JwZVn_ zdyvoXx7WTpyEHo2)gu21#3C!>%2#lC2XO7kr|;lB7MK4}TpOPNO*7&ZK0_i}$1JXc zc)Wo8?TAf3VUElh2jZwcH<7+spF|hLr|Lf=k%s|u zA{KsG_h>S%^HJglx-3_bUrs)*Vqos`mgsuYvAFlJ6&0 zy0_!#CL{ml7bB5Jh~HyYx{f%yi$He|Vzphw?_LXCwm+`D^!u`@*dX~C@uO#RS}#0r z%7&19_kivx&|OP(H(Tk*x5nspg6<&b==_tMN()`~9dY$iEOXB*k;vo3Z=r=QYg-(@ z9As@q%;+b&3#@dj0Fqc2>$5yX1^6DAH^~o zG0)LCIyu7@x~$2%-}fwZG>0m?LY5JU*e<5CY?j;qlw-K{ksa~cho*1l4$J}OIi9m|$ zJb%oJXq}IoWIOH++uXadZQHZZ*|L<1y==nTSXq`o7)zgE8+*o` zS?^|R47Xv@J+?9Uir9;`F&H<$u|YSuSPuI!XKG5c-EKUCtY>Ve-=1Z>YV#?YGsom> znjDm~<3kMS%s#p>ZAE2f#L+)THE>h|M>TL%14lJ*R0Bsfa8v_FHSh@<(C?|%@1>TJ zF5YZCNfy%S6B5$&u5Y?@{tT5KFVWHS&GD#%uT`dmyl%&>eqT24T_TNTJ71?NsNb7S zYkslSyKYqY$q9I(NY%f$FumP)VReiL z-E9WmW}Iv!j>j#)XW<+L`z4ZIxm9Ba(@%-|Ma_-g)i6mXEbs;3>0H`@DFwc@%i!lXzY*y;+0sBbQ3XwBJaV1CEgJiRbFpD}3TP%k*MIyK#y! z4m`<|c)s?K!k3jXTi!FIyTfVtoQC<5_#~clP4nnkl11F#Cg4-ad1o5@LyCXmxy-Mp zp`V3~Et03JLRQPqr*L~U@RNYgFOqoLr>E;!_-^bG6_bL93*GuZNRiQsAeB$}q z=V4-Jc`lEqr{^}Q^l-nT?~~hf#*>QwAAvt1>y#uv|7S&?cz$;tq5`VdVM+$t!|zb| z#B;shR`{MPB>e(a?@R<9#3%9G^9JD0ggp8j4h}+4=59srP~%tI0KHp|_#~c_{s-Vw z>0ulKuvGYS37>Vmq2od&rZEe6;-7e)b)CZJs|L|?2)cHr;s27N-?~K7@pk}l`;Nl* z;f1So>3Fmnfg#mfq1sFP{&cMaK9&6X{O;;1Nk{wobiJeaI9AB?MG_c?6+XONA}SUB z90bhVFN-DOafPQh0~4O!5la_8PXpYn>79%=E|kD{R^b!R(LN3Vcq;in4?OX2ERzg= zp!n1)e1)p;kivga;Sp=PQNLb1S;+@Si;13uXEo z35*v(pQ>Gx;8Lkxen1D>cNP6A;8W4xr0DZ+kc4v;J^k=H75y*M;NMS!pJ6iSBdlEa^TrMl{{M&eYL{Vvn0A!NMJlp{MEe`Jgw;M*GTMRDswD|iGTPq zi8xK+7XzP)PcM*Qm2|zR_#~cRe=O{Z=KaKZ`E$Tiy*&#ht7{d$zD~lzlIk5K#ak_pS!sZk(Fb?;hY&>Hk5+r$tRr^jw^- z*V54Eo-FG%l$=_gWeOiw@@V_NSK+rRyHeT4An>W=IiTnrasgr}H5s$8U{6KA40zH* zOTu_;Q}_`zkN9P?jOWtuDZ|2^_*5%CXDIr1g|{z~2zs7P*YgUWuMFg2i8kyo%~W!p zn+880c!w%$1=pmZZv>v?%vbiHnrCcN_^>jlOBJ(kD}0M0)c)$A!uPC_gew*OrRX?q zt5$ig2A=8-yCgQCGVfFP9yPD&@%{sa@4HG8&QSCtz&q5v70{O{Q{hhmL#nq-wM)k{ zMZl-hvrEwrD8td?=qBJ(wTs^8O8gtIkkUXceEm}4tIK8j7KP^@BbfAKggj4Uqd{jB z%Hy!jApL9srv)Zpa0p=nrYH%6GYk`GW+!3hBw=ubVL~Y!ahQa{frW`w$s!dd%T$=m zz9^Zh7)LH9u%DfxH7Tf)*_S5ERa$~GC9#QOI$h@C6$_R*P1m9ohPmjPD;6v(Ux+;3 zOTl^Vb#*4b`CpHdCxbY@a>>%=mo8XpE?>O3(phCzEx2^4lg^gLVe(~sn4~<+kxqRr z;oqaoY4kUm?m+ZN@FPAYHy=MT3${29w#uw5HE|qv{u+N^y*p52;#XY!iz2wPwWNs4)#$*H z_G|ES89FhUPmf*gU5mzf+(A!mS?owvDski%gTvF8R~BP*%5!Pe(Xq18IP;axbd{&h z#-ZrE+4{yfR7SNYof2+s!I2-LoU*TAk7k2+y*@?TA1L=Y3-W8c>c?MRGEaj~(IvYq z_BPbim3uzj5%BPB`8WiAwrQ%H^89D-Dc(w;!k;Bbaftnj+qAs+}v#9M}AFy zI$Aoo!CVJ78+A~n@y44$hZWPjpiYEOcNBNL(WN*>J8pd85Nw)0tp23X`qRl&L%h-r z*WfI%o(L~J@a#r+pvfD+(8z!v=H$flx@A+~UU7OhIh`T|PUZDrk13&${sWtd=n13h zNDLR#Z3WK*IwqUTkqG%F)h~sm+8gj38VI;IuwRwFA#OU&L-3lB?jePCKPn(93i=x_ zE%7ur7Zm7`mCB))YIjSA*z@7@8CYRyy}Q|@pUTRbWZ#!U0K~TS@ls^Ky*S4C$j5d8 zMYt-ca@KP=rOtJa+7b?Bht8$Y1w{zVo0@!UHk3CshJqOzuI87yTPrA_-xa$X-5$6N zCpo3cU|m!C(YJ!aFgZ~D2t2&*`f@eP&M`k}_`!B7OU$YQ)9JK2ij2c@o=@xiSlO6S z-;~KzL~gy#SMLj=*JAxsyaEeYHLjqIPZw=?st{|Gm>AX87G^fkDDWZ!S=$gDa1HB| zR%aR5X`%duy;gsPtEw zaow9)w)k*@VvZVJR}15qD9 z;kt>%58m-$dTMVr*Whgq(MI}9|L@%6T;fU;|~Rs zZ2O28`H0b32ke-rvjgbUj1*FgC<)8+jDtn;BK4sl_I&i5WMcV5!ern%id6Ut!$q`J z4ymw4u7K04oXd6!Cz)a;r$=uF=1>})mNE?(=Aiwt*&%~A^S+fA7Uq|8BlK2~;5v%y z{p)Cr8tbJ*ia8#CJpxn^UG72br~-cqqZ@+(Gsv$*k+=Tx3Xf;$>U<{_z>R)i1NIxt zpx?Oy1Ik?8)D*QPEd7dgum_Vh{cFqszBA=D*VG45$*oo!&cmi>)Qgl{O|PQKJlsIV z1wMZhc4?Zt6f_6ifeq}m;--YWqQcBO4}vOGd98Nrr1Ic*{yXXFyq)94$&S(`J7T&J37PFc+fH0uW-{7s{_dS^_8`fhsFjsh+LiJD^o+=dO z@z74;lcMv+ipl~@5K&6|_|YX}CR21lnvg1!KBIkTPpucBkRGnIZi4Y*!R_%i#A_y# zq2_Dm1x*U4ts@OtUk0;biKou%=I0^i+IoM3^vo2mQ4gl>KaK#3>%2{J?)20-(KoVt zYTRi;@5H$#e*3737AEm~;-6h<(K)js(=d*fRNSw$*7q1jUektpJp2O;1|+Q2cX+#$ zHxI8P%WDkK>$-v)jJzmnb;ws&GYc=C%HxT!(O|+_cT=sASF@o3OeG8kWRCj6a9qMf zUI6b>qXO!#u`Wm)5ohNGz0LT`J5hN7KR^1&^VXVc0&YBFsI5U+odQ#jC+y>;Z%3ldAzU>pOU;kc0!vR%bENF<8E|0G(@O2&jQkA-X z{rd|I_3tetb+Y^(WYBLLbos*$NvYves-Tu%(`ndr41ceG)Bymc;idsDH1a>(}LV`#V(mOJy-b|NcWmt`vDxp2{Sae*ierE6K-Kemo@m zv|fq!^JQdO%R5wg4f)+$76x{8ui--p_y%6w zl_>u=Re7y{qgs(G_4qIxZwRX zG%#^hND%$2%WHUCLV5jrEuqTO``N6QE~nw-g!0kv0p2c4>2a=k=yE!JD#{a1%dfv5 zIYpIEqz8H2bp{ZG%a6mtSE%xdcwOEK6HJ^rxm5XX>Reo(#|K}DO7cI)0Hx6K1}3iQ2?Y|8#{UK1fl)sI literal 0 HcmV?d00001 diff --git a/case_study/advanced/undo_redo.cpp b/case_study/advanced/undo_redo.cpp index 54fce12..1cc8540 100644 --- a/case_study/advanced/undo_redo.cpp +++ b/case_study/advanced/undo_redo.cpp @@ -77,14 +77,6 @@ class Stack{ * * @return string yang berisi operasi apa saja pada sebuah string */ - Mode get_operation(const std::string& text){ - std::string ans = ""; - std::istringstream iss(text); - std::string cmd; - iss >> cmd; - return classifyInput(cmd); - - } /** * @brief fungsi untuk melakukan parser terhadap string,dengan kata * lain memisahkan keyword(write,read,undo,dan redo) dengan string utama @@ -135,13 +127,13 @@ class Stack{ if(is_full()){ throw std::runtime_error("Stack telah penuh"); } - Mode m = classifyInput(text); + Mode m = classifyInput(text); //harus validasi karena menerima parameter if(m == write){ push_arr(text); }else{ - Mode m = get_operation(text); + Mode m = classifyInput(text); std::cout << "Error: " << m << " not available" << std::endl; - } + } } /** * @brief undo adalah salah satu operasi pada text editor,adapun tugas nya adalah @@ -153,7 +145,7 @@ class Stack{ */ void Undo(){ if(is_empty()){ - std::runtime_error("Queue is empty"); + throw std::runtime_error("Queue is empty"); }else{ push_temp(); pop_arr(); @@ -174,27 +166,6 @@ class Stack{ } std::cout << std::endl; } - public: - std::string input(){ - std::string text; - std::cin >> text; - return text; - } - // 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); //