계산기 알고리즈

x <- 7
y <- 5
x+y
#식으로 표현 하기 
cat(x,"+",y,"=",x+y)
plus <- function(x,y){
  return (x+y);
  
}
plus(3,8)

##minus
cat(x,"-",y,"=",x-y)
minus <- function(x,y){
  return (x-y);
}
minus(3,8)

minus <- function(z,y){
  return (cat(z,"-",y,"=",z-y)); #반영하기 
  
}
minus(3,8)

#multi
cat(x,"*",y,"=",x*y)
multi <- function(x,y){
  return (x*y);
}
multi(3,8)

div.float <- function(x,y){
  return (cat(x,"/",y,"=",x/y));
}
div.float(8,3)  

div.integer<- function(x,y){
  return (cat(x,"%/%",y,"=",x%/%y));
}
div.integer(9,8) 
  
div.remainder<- function(x,y){
  return (cat(x,"%%",y,"=",x%%y));
}
div.remainder(8,3) 

#계산기
x <- 3
op <- "+"
y <- 2

if(op=="+") plus (x,y) else
  if(op=="-") minus (x,y) else
    if(op=="*") multi (x,y) else 
      if(op=="/") div.float (x,y) else
        if(op=="%/%") div.integer (x,y) else
          if(op=="%%") div.remainder (x,y) else
            print("error")
    
calc2(5,"+",6)   

calc2 <- function(x,op,y){
  switch (
    op,
    "+"=plus (x,y),
    "-"=minus (x,y),
    "*"=multi (x,y),
    "/"=div.float (x,y),
    "%/%" =div.integer (x,y),
    "%%"=div.remainder (x,y)
  )
}    
    
 calc2(5,"+", 6)   
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KIyMjI+qzhOyCsOq4sCDslYzqs6DrpqzspogNCg0KYGBge3J9DQp4IDwtIDcNCnkgPC0gNQ0KeCt5DQoj7Iud7Jy866GcIO2RnO2YhCDtlZjquLAgDQpjYXQoeCwiKyIseSwiPSIseCt5KQ0KcGx1cyA8LSBmdW5jdGlvbih4LHkpew0KICByZXR1cm4gKHgreSk7DQogIA0KfQ0KcGx1cygzLDgpDQoNCiMjbWludXMNCmNhdCh4LCItIix5LCI9Iix4LXkpDQptaW51cyA8LSBmdW5jdGlvbih4LHkpew0KICByZXR1cm4gKHgteSk7DQp9DQptaW51cygzLDgpDQoNCm1pbnVzIDwtIGZ1bmN0aW9uKHoseSl7DQogIHJldHVybiAoY2F0KHosIi0iLHksIj0iLHoteSkpOyAj67CY7JiB7ZWY6riwIA0KICANCn0NCm1pbnVzKDMsOCkNCg0KI211bHRpDQpjYXQoeCwiKiIseSwiPSIseCp5KQ0KbXVsdGkgPC0gZnVuY3Rpb24oeCx5KXsNCiAgcmV0dXJuICh4KnkpOw0KfQ0KbXVsdGkoMyw4KQ0KDQpkaXYuZmxvYXQgPC0gZnVuY3Rpb24oeCx5KXsNCiAgcmV0dXJuIChjYXQoeCwiLyIseSwiPSIseC95KSk7DQp9DQpkaXYuZmxvYXQoOCwzKSAgDQoNCmRpdi5pbnRlZ2VyPC0gZnVuY3Rpb24oeCx5KXsNCiAgcmV0dXJuIChjYXQoeCwiJS8lIix5LCI9Iix4JS8leSkpOw0KfQ0KZGl2LmludGVnZXIoOSw4KSANCiAgDQpkaXYucmVtYWluZGVyPC0gZnVuY3Rpb24oeCx5KXsNCiAgcmV0dXJuIChjYXQoeCwiJSUiLHksIj0iLHglJXkpKTsNCn0NCmRpdi5yZW1haW5kZXIoOCwzKSANCg0KI+qzhOyCsOq4sA0KeCA8LSAzDQpvcCA8LSAiKyINCnkgPC0gMg0KDQppZihvcD09IisiKSBwbHVzICh4LHkpIGVsc2UNCiAgaWYob3A9PSItIikgbWludXMgKHgseSkgZWxzZQ0KICAgIGlmKG9wPT0iKiIpIG11bHRpICh4LHkpIGVsc2UgDQogICAgICBpZihvcD09Ii8iKSBkaXYuZmxvYXQgKHgseSkgZWxzZQ0KICAgICAgICBpZihvcD09IiUvJSIpIGRpdi5pbnRlZ2VyICh4LHkpIGVsc2UNCiAgICAgICAgICBpZihvcD09IiUlIikgZGl2LnJlbWFpbmRlciAoeCx5KSBlbHNlDQogICAgICAgICAgICBwcmludCgiZXJyb3IiKQ0KICAgIA0KY2FsYzIoNSwiKyIsNikgICANCg0KY2FsYzIgPC0gZnVuY3Rpb24oeCxvcCx5KXsNCiAgc3dpdGNoICgNCiAgICBvcCwNCiAgICAiKyI9cGx1cyAoeCx5KSwNCiAgICAiLSI9bWludXMgKHgseSksDQogICAgIioiPW11bHRpICh4LHkpLA0KICAgICIvIj1kaXYuZmxvYXQgKHgseSksDQogICAgIiUvJSIgPWRpdi5pbnRlZ2VyICh4LHkpLA0KICAgICIlJSI9ZGl2LnJlbWFpbmRlciAoeCx5KQ0KICApDQp9ICAgIA0KICAgIA0KIGNhbGMyKDUsIisiLCA2KSAgIA0KDQpgYGANCg0K