⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3063416_wa.cpp

📁 北大大牛代码 1240道题的原代码 超级权威
💻 CPP
字号:
#include <stdio.h>
#include <algorithm>

using namespace std;

char page[77][77];
int w, h;

void print()
{
	int i;

	putchar('+');
	for (i = 0; i < w; i++)
	{
		putchar('-');
	}
	putchar('+');
	putchar('\n');
}

void PRINT()
{
	int i, j;

	print();
	for (i = 1; i <= h; i++)
	{
		putchar('|');
		for (j = 1; j <= w; j++)
		{
			putchar(page[i][j]);
		}
		putchar('|');
		putchar('\n');
	}
	print();
	putchar('\n');
}

int main()
{	
	char com[10];
	char text[75];
	int i, j;
	int a, b, c, d;

	while (scanf("%d%d",&w,&h)==2)
	{
		if (w==0&&h==0)
		{
			break;
		}
		memset(page,' ',sizeof(page));
		while (scanf("%s",com)==1)
		{
			if(strcmp(com,"POINT")==0)
			{
				scanf("%d%d",&b,&a);
				if(page[a][b]==' '||page[a][b]=='o')
					page[a][b] = 'o';
				else
					page[a][b] = '*';
			}
			if (strcmp(com,"TEXT")==0)
			{
				scanf("%d%d%s",&b,&a,text);
				for (j = b; text[j-b]; j++)
				{
					if (page[a][j]==' '||page[a][j]==text[j-b])
					{
						page[a][j] = text[j-b];
					}
					else
					{
						if ((page[a][j]=='-'&&text[j-b]=='|')||(page[a][j]=='|'&&text[j-b]=='-'))
						{
							page[a][j] = '+';
						}
						else
						{
							if ((page[a][j]=='/'&&text[j-b]=='\\')||(page[a][j]=='\\'&&text[j-b]=='/'))
							{
								page[a][j] = 'x';
							}
							else
							{
								page[a][j] = '*';
							}
						}
					}
				}
			}
			if (strcmp(com,"LINE")==0)
			{
				scanf("%d%d%d%d",&b,&a,&d,&c);
				if (a==c)
				{
					if (b > d)
					{
						swap(b,d);
					}
					for (i = b; i <= d; i++)
					{
						if (page[a][i]==' '||page[a][i]=='-')
						{
							page[a][i] = '-';
						}
						else
						{
							if (page[a][i]=='|')
								page[a][i] = '+';
							else
								page[a][i] = '*';
						}
					}
					continue;
				}
				if (b==d)
				{
					if(a > c)
					{
						swap(a,c);
					}
					for(i = a; i <= c; i++)
					{
						if (page[i][b]==' '||page[i][b]=='|')
						{
							page[i][b] = '|';
						}
						else
						{
							if (page[i][b]=='-')
								page[i][b] = '+';
							else
								page[i][b] = '*';
						}
					}
					continue;
				}
				if ((b-d)/(a-c)==-1)
				{
					if (a > c)
					{
						swap(a,c);
						swap(b,d);
					}
					i = a;j = b;
					while(i<=c&&j>=d)
					{
						if(page[i][j]==' '||page[i][j]=='/')
						{
							page[i][j] = '/';
						}
						else
						{
							if(page[i][j]=='\\')
								page[i][j] = 'x';
							else
								page[i][j] = '*';
						}
						i++;j--;
					}
				}
				else
				{
					if(a > c)
					{
						swap(a,c);
						swap(b,d);
					}
					i = a;j = b;
					while (i<=c&&j<=d)
					{
						if (page[i][j]==' '||page[i][j]=='\\')
						{
							page[i][j] = '\\';
						}
						else
						{
							if(page[i][j]=='/')
								page[i][j] = 'x';
							else
								page[i][j] = '*';
						}
						i++;j++;
					}
				}
			}
			if (strcmp(com,"CLEAR")==0)
			{
				scanf("%d%d%d%d",&b,&a,&d,&c);
				if (a > c || (a == c && b > d))
				{
					swap(a,c);
					swap(b,d);
				}
				for (i = a; i <= c; i++)
				{
					for (j = b; j <= d; j++)
					{
						page[i][j] = ' ';
					}
				}
			}
			if (strcmp(com,"PRINT")==0)
			{
				print();
				for (i = 1; i <= h; i++)
				{
					putchar('|');
					for (j = 1; j <= w; j++)
					{
						putchar(page[i][j]);
					}
					putchar('|');
					putchar('\n');
				}
				print();
				putchar('\n');
				break;
			}
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -