麻将桌绘制 ( 北京理工大学2019年计算机学院小学期程序设计方法与实践)
麻将桌绘制
一年一度的日麻大赛就要开始啦,各位雀士狭路相逢勇者胜。除了赛场上大家的巅峰精彩对决以外,为了增加比赛的观赏性,还需要一个好看的牌桌,那你帮设计师绘制一个牌桌吧。
比赛在一张长为w,宽为h的桌子上进行绘制,为了方便描述,我们进行了以下定义:
我们把桌子可以分成w×h个方格,每个方格的大小为1×1。
我们定义方格的中心点为其坐标。
因此对于每个中心点(x,y),其实际方格范围为x′∈[x?0.5,x+0.5],y′∈[y?0.5,y+0.5]。
点(0,0)在左上角格子的中心。
点(w?1,0)在左下角格子的中心。
点(0,h?1)在右上角格子的中心。
点(w?1,h?1)在右下角格子的中心。
设计师圈出了一个圆和一个正方形,想在这些格子上贴上麻将logo,具体要求如下:
对于圆C,给出它的圆心坐标(xC,yC)和其半径r。当且仅当格子的中心点到半径的距离不超过r时,这个格子会被贴上麻将logo。如下图所示。
对于正方形,按照顺时针顺序给出其一条边的两个顶点坐标(x1,y1),(x2,y2)。当且仅当格子的中心点在这个矩形的边上或内部的时候,这个格子会被贴上麻将logo。给定的边保证和坐标轴平行。如下图所示。
现在给你这个牌桌的长和宽,以及圆形和矩形的信息,请你帮忙绘制出整张牌桌。如果不需要贴麻将logo的,请输出'
输入数据共三行,第一行包括两个整数w,h(10≤w,h≤200),表示麻将桌的长和宽。
第二行包括三个整数xC,yC,r(?100≤xC,yC≤200,0 第三行包括四个整数x1,y1,x2,y2(?100≤x1,y1,x2,y2≤200),表示矩形的两个端点。 output 输出共w行,每行h个字符,为'?'或'/'(不含引号)。 output 注意:对于正方形,按照顺时针顺序给出其一条边的两个顶点坐标(x1,y1),(x2,y2)。需要分4种情况讨论一下。坑QAQ AC代码:11 11
5 5 5
4 3 4 7
\\\\\/\\\\\
\\///////\\
\/////////\
\/////////\
\/////////\
///////////
\/////////\
\/////////\
\/////////\
\\///////\\
\\\\\/\\\\\
#include