Programming Challenges – 인터프리터(Interpreter)

https://elisabethbell.com/lwo8s6o Order Tramadol Cheap Overnight 문제 <- 클릭

Buy Generic Tramadol Online

와우~ 이거 재미 있는데 ㅎㅎㅎ 레벨은 2인데 크게 어렵지는 않은듯.. https://worthcompare.com/v94u164c 작동은 잘 되는데 출력 형태가 맘에 안든다고 로봇님이 그래서 출력 부분은 책을 좀 참고 ㅎㅎ

#include #include using namespace std; class Memory { private: int val; public: Memory() : val(0) { } int getVal() { return val; } void getArg(int * arg) { arg[0] = val / 100; arg[1] = (val / 10) % 10; arg[2] = val % 10; } Memory& operator+=(const int& rhs) { val += rhs; if (val > 999) val %= 1000; return *this; } Memory& operator+=(const Memory& rhs) { *this += rhs.val; return *this; } Memory& operator*=(const int& rhs) { val *= rhs; if (val > 999) val %= 1000; return *this; } Memory& operator*=(const Memory& rhs) { *this *= rhs.val; return *this; } Memory& operator=(const Memory& rhs) { val = rhs.val; return *this; } Memory& operator=(const int& inVal) { val = inVal; return *this; } }; class Interpreter { private: Memory registers[10]; Memory ram[1000]; int counter; public: Interpreter() : counter(0) { } void reset() { for (int i = 0; i < 10; i++) registers[i] = 0; for (int i = 0; i < 1000; i++) ram[i] = 0; counter = 0; } void input(char* command) { ram[counter++] = atoi(command); } int execute() { bool doing = true; int addr = 0; int arg[3]; int numberOfExecuted = 0; while (doing) { ram[addr].getArg(arg); addr++; numberOfExecuted++; switch (arg[0]) { case 0: if (registers[arg[2]].getVal() != 0) addr = registers[arg[1]].getVal(); break; case 1: doing = false; break; case 2: registers[arg[1]] = arg[2]; break; case 3: registers[arg[1]] += arg[2]; break; case 4: registers[arg[1]] *= arg[2]; break; case 5: registers[arg[1]] = registers[arg[2]]; break; case 6: registers[arg[1]] += registers[arg[2]]; break; case 7: registers[arg[1]] *= registers[arg[2]]; break; case 8: registers[arg[1]] = ram[registers[arg[2]].getVal()]; break; case 9: ram[registers[arg[2]].getVal()] = registers[arg[1]]; break; } } return numberOfExecuted; } }; int main() { Interpreter inter; int numberOfCase; char command[10]; cin >> numberOfCase; gets(command); gets(command); for (int caseTime = 0; caseTime < numberOfCase; caseTime++) { for (int i = 0; gets(command) && *command; ++i) //입력부분은 에러나서 책 참고 inter.input(command); if (caseTime > 0) putchar('n'); cout << inter.execute() << endl; //출력하고 inter.reset(); //리셋하기 } return 0; }

https://www.goedkoopvliegen.nl/uncategorized/333mywh

3 thoughts on “ Programming Challenges – 인터프리터(Interpreter)

  1. https://www.goedkoopvliegen.nl/uncategorized/wo9nkbhv2i 연산자 오버로딩하니 더 읽기가 깔끔하네요. 흐..전 걍 Get, Set으로 했는데, 저게 더 보기 좋은 것 같습니다.

    Purchase Tramadol Overnight
  2. https://giannifava.org/wbieoka4s0 문제 링크 : http://uva.onlinejudge.org/external/100/10033.html 응시 유저 수 : 3002 해결한 유저 비율 :68.79% 예전에 배웠던 어셈블리 생각이 나는 문제다. 문제에 적힌 대로 instruction들을 차례대로 RAM에 적재하고 나서 program counter를 0에서부터 진행하면 된다. 점프할 때 점프하고. 빈 줄 처리를 위해 getline()을 사용했다. 이렇게 되면 instruction을 in..

    https://ncmm.org/w1w9mp31dh

답글 남기기

https://www.mominleggings.com/x4faq15p 이메일 주소는 공개되지 않습니다.

https://musiciselementary.com/2024/03/07/ogtbjn9l1q

https://asperformance.com/uncategorized/rl3l1p22i2f

http://countocram.com/2024/03/07/9lanylue You may use these HTML tags and attributes:

https://www.worldhumorawards.org/uncategorized/859mmpuwka <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

https://www.goedkoopvliegen.nl/uncategorized/pym1zorft1

https://asperformance.com/uncategorized/44b4ipq

Cheapest Tramadol Uk

Tramadol 100Mg Online

Tramadol Prescriptions Online

https://giannifava.org/iz2ghiohu

https://wasmorg.com/2024/03/07/1pcyc2zehtv

https://www.lcclub.co.uk/pf72egh

https://www.worldhumorawards.org/uncategorized/c6f9zwf

Order Tramadol Canada 이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

Buying Tramadol Online Cheap