问题如下:
编写并测试具有以下功能的程序。
首先,定义一个名为Point的新结构类型,用x和y值的浮点数表示
。另外,定义一个名为Rectangle的新结构类型,它具有与x轴和y轴平行的边,允许您使用bottom_left和top_right Points来表示矩形。
接下来编写一个函数,根据传递给函数的Rectangle参数计算并返回Rectangle的区域。
避免按值传递,确保函数显示通过引用行为传递
确保该函数返回适当类型的数据
接下来编写一个测试Point是否在Rectangle中的函数。这个函数应该通过引用接受两个参数,Point和Rectangle来测试。如果该点在矩形内,则该函数必须返回一个整数值,否则它应返回零。编写一个main函数,使用适当的局部变量作为测试数据,然后使用上面的两个函数
#include <stdio.h>
struct Point
{
float x;
float y;
};
struct Rectangle
{
struct Point lb; // left below point
struct Point ru; // right upper point
};
float getArea(struct Rectangle r)
{
return (r.ru.x - r.lb.x)*(r.ru.y - r.lb.y);
}
void setValue(struct Point* p, float x, float y)
{
p->x = x;
p->y = y;
}
void setValueP(struct Rectangle* r, struct Point* lb, struct Point* ru)
{
r->lb = *lb;
r->ru = *ru;
}
void setValueR(struct Rectangle* r, float x1, float y1, float x2, float y2)
{
r->lb.x = x1;
r->lb.y = y1;
r->ru.x = x2;
r->ru.y = y2;
}
int contains(struct Rectangle r, struct Point p)
{
if((p.x > r.lb.x && p.x && p.x < r.ru.x) && (p.y > r.lb.y && p.y && p.y < r.ru.y))
return 1;
return 0;
}
int main()
{
struct Rectangle r;
setValueR(&r, 1, 2, 6, 8);
printf("%f\n", getArea(r));
struct Point p1;
setValue(&p1, 4, 5);
struct Point p2;
setValue(&p2, 4, 1);
if(contains(r, p1))
printf("inside the Rectangle\n");
else
printf("outside the Rectangle\n");
if(contains(r, p2))
printf("inside the Rectangle\n");
else
printf("outside the Rectangle\n");
}
答案 0 :(得分:0)
确保编译c ++,这些错误看起来像用c编译器编译的c ++代码
答案 1 :(得分:0)
我需要它作为c编程代码,你能帮帮我吗?
C语言没有'reference'参数,没有'classes',也没有'this'的概念。
需要将代码更改为不使用引用而不使用类,也不要使用“this”。
你可以从改变开始:
struct Point
{
float x;
float y;
Point(float x, float y) : x(x), y(y)
{}
Point()
{}
};
到此:
struct Point
{
float x;
float y;
};
然后,在引用'Point'时需要包含'struct'修饰符,因为没有'Point'类但是有一个'Point'结构。
所以改变这个:
struct Rectangle
{
Point lb; // left below point
Point ru; // right upper point
...
到此:
struct Rectangle
{
struct Point lb; // left below point
struct Point ru; // right upper point
};
setValue()函数正在使用参数的引用,并使用C ++'this'来指示当前对象:
void setValue(Point& lb, Point& ru)
{
this->lb = lb;
this->ru = ru;
}
但是,C没有'this'或'references'。要为C编写它,请使用:
void setValue( struct rectangle *pRect, struct Point *pLB, struct Point *pRU)
{
pRect->lb.x = pLB->x;
pRect->lb.y = pLB->y;
pRect->ru.x = pRU->x;
pRect->ru.y = pRU->y;
} // end function: setValue
类似的考虑因素与其他发布的代码有关。