> 文档中心 > 直角坐标系

直角坐标系

【问题描述】

给你 n 个平面上的点,请你绘制出一个直角坐标系。对于原点,用’+'表示(除去 n 个点的位置);对于 y 坐标轴,用

'|‘表示(除去原点和 n 个点的位置);对于 x 坐标轴,用’-'表示(除去原点和 n 个点的位置);对

于 n 个平面上的点,用’*‘表示;所有其他点,用’.'表示。为了更好地理解,请参照样例

【输入格式】

第一行包括一个正整数 n。

接下来 n 行,每行两个整数 x, y,表示点的坐标。

【输出格式】

一个直角坐标系。其中,第一行的 y 坐标为所有点的 y 坐标和 0 中的最大值;最后一行的 y 坐

标为所有点的 y 坐标和 0 中的最小值;第一列的 x 坐标为所有点的 x 坐标和 0 中的最小值;最后一

列 x 坐标为所有点的 x 坐标和 0 中的最大值。详见样例。

【输入样例 18-10 5-7 3-4 2-9 4 0 1 6 -13 0 8 -3【输出样例 1*.........|.........*........|...........*......|..............*...|..................*........----------+--*-----..........|.....*............|..................|.......*【输入样例 251 2 5 3 2 1 5 5 3 3【输出样例 2|....*|.....|..*.*|*....|.*...+-----
【数据规模】对于 30%的数据,1<=x<=1001<=y<=100对于 100%的数据,1<=n<=250, 且 x,y 的绝对值都不超过 100,所有的点两两不同。

CODE

#include using namespace std;const int P=105;int xmax=P,xmin=P,ymax=P,ymin=P,n;bool t[210][210];int main(){scanf("%d",&n);int x,y,i,j;while(n--){scanf("%d%d",&x,&y);x+=P,y+=P;t[y][x]=1;xmax=max(xmax,x);xmin=min(xmin,x);ymax=max(ymax,y);ymin=min(ymin,y);}for(i=ymax;i>=ymin;i--){for(j=xmin;j<=xmax;j++){if(t[i][j]) putchar('*');else if(i==P&&j==P) putchar('+');else if(i==P) putchar('-');else if(j==P) putchar('|');else putchar('.');}putchar('\n');}return 0;}

天天赞天天看,我们明天再见,拜拜!

四四频道