範例程式碼 uva337
//uva337
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main() {
int n, cases = 0;
while(scanf("%d", &n) == 1 && n) {
char g[10][10];
while(getchar() != '\n');
memset(g, ' ', sizeof(g));
int px = 0, py = 0;
bool insertmode = false;
string cmd, cmds = "";
while(n--) {
getline(cin, cmd);
cmds += cmd;
}
int i, j;
for(i = 0; i < cmds.length(); i++) {
if(cmds[i] == '^') {
i++;
if(cmds[i] == 'b') {
py = 0;
}
else if(cmds[i] == 'c') {
memset(g, ' ', sizeof(g));
}
else if(cmds[i] == 'd') {
px++;
if(px >= 10)
px = 9;
}
else if(cmds[i] == 'e') {
for(j = py; j < 10; j++)
g[px][j] = ' ';
}
else if(cmds[i] == 'h') {
px = 0, py = 0;
}
else if(cmds[i] == 'i') {
insertmode = true;
}
else if(cmds[i] == 'l') {
if(py > 0)
py--;
}
else if(cmds[i] == 'o') {
insertmode = false;
}
else if(cmds[i] == 'r') {
py++;
if(py >= 10)
py = 9;
}
else if(cmds[i] == 'u') {
if(px > 0)
px--;
}
else if(cmds[i] == '^') {
goto printss;
}
else {
px = cmds[i] - '0';
i++;
py = cmds[i] - '0';
}
}
else {
printss:
if(insertmode) {
for(j = 8; j >= py; j--)
g[px][j + 1] = g[px][j];
g[px][py] = cmds[i];
}
else
g[px][py] = cmds[i];
py++;
if(py >= 10)
py = 9;
}
}
printf("Case %d\n", ++cases);
puts("+----------+");
for(int i = 0; i < 10; i++, puts("|")) {
putchar('|');
for(int j = 0; j < 10; j++)
putchar(g[i][j]);
}
puts("+----------+");
}
return 0;
}