我是一名初级程序员,正在为自己进行初级测试,以掌握使用C语言的核心价值。我有一个测试用例,并且不知道从哪里开始构建它以便用GCC进行编译。我有一个基本的理论和伪代码摘要,但主要需要一点帮助。
我已经搜索了这个问题的相关问题和排列,并且无法对C的逻辑做出正面或反面。
给出以下逻辑:
使用C语言,具有OverlappingRectangles(strArr)函数 读取传递的strArr参数,该参数代表两个 笛卡尔坐标平面上的矩形,将包含8 坐标与前4个组成矩形1和后4个 组成rectange 2.它将采用以下格式: "(0,0),(2,2),(2,0),(0,2),(1,0),(1,2),(6,0),(6,2 )&#34。你的程序应该 确定两个矩形重叠的空间区域,和 然后输出这个重叠区域可以适应的次数 第一个矩形。对于上面的例子,重叠区域 组成一个区域2的矩形,和第一个矩形(前4个 坐标)组成一个区域4的矩形,所以你的程序应该 输出2.坐标都是整数。如果没有重叠 两个矩形之间返回0。
我输了。
首先应该添加这个:
答案 0 :(得分:0)
你有一个表格的字符串:
(x1,y1)(x2,y2)(x2,y1)(x1,y2)(x3,y3)(x4,y4)(x4,y3)(x3,y4)
定义2个矩形:
r1 = (x1,y1) to (x2,y2)
r2 = (x3,y3) to (x4,y4)
您需要先:
x1
- x4
和y1
- y4
的数字 - 例如sscanf
及其执行此操作的返回值您可以创建辅助函数,例如:
const char *parse_rectangle(const char *str, rectangle *r);
这将以r
形式从str
读取一个矩形(x1,y1)(x2,y2)(x2,y1)(x1,y2)(x3,y3)
(包括任何验证)并返回指向下一个字符的指针。
现在,你将有两个矩形。
然后,您可以将这些矩形的交集计算为第三个矩形,例如:
int intersection(const rectangle *r1, const rectangle *r2, rectangle *result);
如果矩形相交则返回1
,如果不相交则返回0
并用交叉点填充result
。如果您使用的是C99,则可以使用_Bool
代替。
现在,您需要一个计算区域的函数,例如:
int area(const rectangle *r);
您可以通过相交的矩形和第一个矩形传递它,以获得两者的区域。
现在,您只需将第一个矩形区域除以相交的矩形区域并打印结果。