用c++写个程序,在一个四边形类中实现两个函数,功能是输入四个顶点坐标判断是否构成一个等边四边形 ,急求

如题所述

//以下为原创答案和测试结果图。

#include <stdio.h> 

#include <math.h>

double LONG(double a[],double b[]);

void main()

{

double a[4],b[4],c[4],d[4],x1[4],x2[4];

printf("请逆时针输入四点的横坐标\n");

printf("请先输入根号下的数,若没有输入0,再输入空格(重要),再输入分数位,再输入空格,\n");

printf("再输入分母,没有分母输入1,最后然后回车,接着输入下一个点的横坐标\n");

scanf("%lf %lf %lf",&a[0],&c[0],&d[0]);x1[0]=sqrt(a[0])+c[0]/d[0];

scanf("%lf %lf %lf",&a[1],&c[1],&d[1]);x1[1]=sqrt(a[1])+c[1]/d[1];

scanf("%lf %lf %lf",&a[2],&c[2],&d[2]);x1[2]=sqrt(a[2])+c[2]/d[2];

    scanf("%lf %lf %lf",&a[3],&c[3],&d[3]);x1[3]=sqrt(a[3])+c[3]/d[3];

    printf("请逆时针输入四点的纵坐标\n");

    scanf("%lf %lf %lf",&b[0],&c[0],&d[0]);x2[0]=sqrt(b[0])+c[0]/d[0];

scanf("%lf %lf %lf",&b[1],&c[1],&d[1]);x2[1]=sqrt(b[1])+c[1]/d[1];

scanf("%lf %lf %lf",&b[2],&c[2],&d[2]);x2[2]=sqrt(b[2])+c[2]/d[2];

    scanf("%lf %lf %lf",&b[3],&c[3],&d[3]);x2[3]=sqrt(b[3])+c[3]/d[3];

if (LONG(x1,x2)==1)

printf("四个顶点坐标构成了一个等边四边形\n");

else

printf("四个顶点坐标没有构成等边四边形\n");

}

double LONG(double x1[],double x2[])

{

double l1,l2,l3,l4,n;

n=0;

l1=(x1[0]-x1[1])*(x1[0]-x1[1])+(x2[0]-x2[1])*(x2[0]-x2[1]);

l2=(x1[1]-x1[2])*(x1[1]-x1[2])+(x2[1]-x2[2])*(x2[1]-x2[2]);

    l3=(x1[2]-x1[3])*(x1[2]-x1[3])+(x2[2]-x2[3])*(x2[2]-x2[3]);

l4=(x1[3]-x1[0])*(x1[3]-x1[0])+(x2[3]-x2[0])*(x2[3]-x2[0]);

if (l1==0)

printf("数据有误");

if (l1==l2)

n=n+1;

else

n=n;

if (l2==l3)

n=n+1;

else

n=n;

if (l3==l4)

n=n+1;

else

n=n;

if (l4==l1)

n=n+1;

else

n=n;

if  (n==4)

return 1;

else

return 0;

 

但若将上面那个点横坐标改为0.5,就不是正方形了,如图。

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-02
#include<iostream>
using namespace std;
class Rectangle
{
private:
float upleftx;
float uplefty;
float uprightx;
float uprighty;
float downrightx;
float downrighty;
float downleftx;
float downlefty;
public:
Rectangle(float upleftx,float uplefty, float uprightx, float uprighty, float downrightx, float downrighty, float downleftx, float downlefty)
{
this->upleftx = upleftx;
this->uplefty = uplefty;
this->uprightx = uprightx;
this->uprighty = uprighty;
this->downrightx = downrightx;
this->downrighty = downrighty;
this->downleftx = downleftx;
this->downlefty = downlefty;
}
bool isEqual()
{
if(((upleftx-downrightx)*(uprightx-downleftx)+(uplefty-downrighty)*(uprighty-downlefty))==0&&
(upleftx+downrightx)==(uprightx+downleftx)&&(uplefty+downrighty)==(uprighty+downlefty)
)
{
return true;
}
else
{
return false;
}
}
};
int main()
{
cout<<"请按顺时针或逆时针方向依次输各点坐标:"<<endl;
float ulx,uly,urx,ury,drx,dry,dlx,dly;
cin>>ulx>>uly>>urx>>ury>>drx>>dry>>dlx>>dly;
Rectangle rec(ulx,uly,urx,ury,drx,dry,dlx,dly);
if(rec.isEqual()==1)
{
cout<<"此四边形是等边四边形!"<<endl;
}
else
{
cout<<"此四边形不是等边四边形!"<<endl;
}
return 0;
}本回答被网友采纳
相似回答