07/09/22 20:10:26
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void){
double reg = 0, mem = 0;
char buf[128] = {0}, *p;
while(1){
scanf("%127s", buf);
if(!strcmp(buf, "end:")) break;
else if(!strcmp(buf, "M+")) mem += reg;
else if(!strcmp(buf, "M-")) mem -= reg;
else if(!strcmp(buf, "MR")) reg = mem;
else if(!strcmp(buf, "RC")) reg = 0;
else if(!strcmp(buf, "MC")) mem = 0;
else if(isalpha(*buf)) fprintf(stderr, "error\n");
else{
p = buf;
reg += strtod(p, &p);
while(*p != '=' && *p != '\0')
switch(*p++){
case '+' : reg += strtod(p, &p); break;
case '-' : reg -= strtod(p, &p); break;
case '*' : reg *= strtod(p, &p); break;
case '/' : reg /= strtod(p, &p); break;
default : reg = strtod(p, &p); break;
}
}
printf("reg = %g \t mem = %g\n", reg, mem);
}
return 0;
}