类的问题,好像是变量传不出去,或是作用域。

p2227 2007-04-29 07:45:12
#include <iostream.h>
#include <math.h>
class CPoint
{
public:
int px,py;
CPoint(){ }
CPoint(int x1,int y1) {px=x1;py=y1;}
};
class CLine:public CPoint
{
public:
int lx,ly;
CLine(){}
CLine(int x1,int y1,int x2,int y2):CPoint(x1,y1)
{
lx=x2;
ly=y2;
}
double juli(CPoint a,CLine b);
double juli();
};
class CJuxing:public CLine
{
public:
int jx,jy;
CJuxing(int x1,int y1,int x2,int y2,int x3,int y3):CLine(x1,y1,x2,y2)
{
jx=x3;
jy=y3;
}
double zhouchang(CLine a,CLine b);
double mianji(CLine a,CLine b);
};

double CLine::juli(CPoint a,CLine b)
{
return sqrt(pow((a.px-b.lx),2)+pow((a.py-b.ly),2));
}
double CLine::juli()
{
return sqrt(pow((px-lx),2)+pow((py-ly),2));
}
double CJuxing::zhouchang (CLine a,CLine b)
{
return ((a.juli()+b.juli())*2);
}
double CJuxing::mianji (CLine a,CLine b)
{
return (a.juli()*b.juli());
}
int flag=3;
CPoint p1;
CLine l1;
CLine l2;
int hzb,zzb;
void main()
{
do
{
flag=3;
cout<<"请输入一个点的横坐标和纵坐标";
cin>>hzb>>zzb;
CPoint p1(hzb,zzb);
cout<<"一个点已经构造\n";
cout<<"请输入另一个点的横坐标和纵坐标";
cin>>hzb>>zzb;
CLine l1(p1.px,p1.py,hzb,zzb);
cout<<"一条直线已经构造\n";
do
{
flag=3;
cout<<"请输入第三个点的横坐标和纵坐标";
cin>>hzb>>zzb;
int temp1=(p1.px-l1.lx)*(hzb-l1.lx)+(p1.py-l1.ly)*(zzb-l1.ly);
int temp2=(p1.px-l1.lx)*(hzb-l1.lx)+(p1.py-l1.ly)*(zzb-l1.ly);
if(temp1*temp2!=0)
{
cout<<"输入的三个点构不成矩形\n";
cout<<"请选择:0.退出程序\t1.只重输第三个点\t2.重输全部三个点\n";
cin>>flag;
}
}while(flag==1);
}while(flag==2);
if (flag==0)return;
CLine l2(l1.lx,l1.ly,hzb,zzb);
CJuxing j1(l1.px,l1.py,l2.px,l2.py,hzb,zzb);
cout<<"一个矩形已经构造\n";
cout<<endl;
cout<<"直线距离是:"<<l1.juli(p1,l1);
cout<<"\n矩形周长是:"<<j1.zhouchang (l1,l2);
cout<<"\n矩形面积是:"<<j1.mianji (l1,l2)<<endl;
}


有一些逻辑错误 的,暂且不用管,我的测试结果是这样的。

请输入一个点的横坐标和纵坐标0 0
一个点已经构造
请输入另一个点的横坐标和纵坐标0 2
一条直线已经构造
请输入第三个点的横坐标和纵坐标2 2
一个矩形已经构造
直线距离是:0
矩形周长是:5.65685
矩形面积是:0
ress any key to continue

调试时,开始时变量还传得好好的,执行到
cout<<"直线距离是:"<<l1.juli(p1,l1);
cout<<"\n矩形周长是:"<<j1.zhouchang (l1,l2);
cout<<"\n矩形面积是:"<<j1.mianji (l1,l2)<<endl;

时,类内的成员变量全都不是原来输入的数了, 是出了什么问题?怎么样解决?
...全文
269 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
p2227 2007-04-30
  • 打赏
  • 举报
回复
哦,谢谢,我还没看出有改动呢?是不是前面声明过然后后面又要改时就要这样呀?
lightnut 2007-04-30
  • 打赏
  • 举报
回复
与你原来的代码对照看, //!!!!!!!!!!突出修改过的地方:)
p2227 2007-04-30
  • 打赏
  • 举报
回复
p1 = CPoint(hzb,zzb); //!!!!!!!!!!!!!!!
cout<<"一个点已经构造\n";
cout<<"请输入另一个点的横坐标和纵坐标";
cin>>hzb>>zzb;
l1 = CLine(p1.px,p1.py,hzb,zzb); //!!!!!!!!!!!!!!


这些“//!!!!!!!!!!!!!!”想要说明什么??
lightnut 2007-04-29
  • 打赏
  • 举报
回复
class CPoint
{
public:
int px,py;
CPoint(){ }
CPoint(int x1,int y1) {px=x1;py=y1;}
};

class CLine:public CPoint
{
public:
int lx,ly;
CLine(){}
CLine(int x1,int y1,int x2,int y2):CPoint(x1,y1)
{
lx=x2;
ly=y2;
}

double juli(CPoint a,CLine b);
double juli();
};

class CJuxing:public CLine
{
public:
int jx,jy;
CJuxing(int x1,int y1,int x2,int y2,int x3,int y3):CLine(x1,y1,x2,y2)
{
jx=x3;
jy=y3;
}

double zhouchang(CLine a,CLine b);
double mianji(CLine a,CLine b);
};


double CLine::juli(CPoint a,CLine b)
{
return sqrt(pow((a.px-b.lx),2.0f)+pow((a.py-b.ly),2.0f));
}

double CLine::juli()
{
return sqrt(pow((px-lx),2.0f)+pow((py-ly),2.0f));
}

double CJuxing::zhouchang (CLine a,CLine b)
{
return ((a.juli()+b.juli())*2);
}

double CJuxing::mianji (CLine a,CLine b)
{
return (a.juli()*b.juli());
}



int main()
{
int flag=3; //!! 最好不用全局变量, 都移到这里吧:)
CPoint p1; //!!
CLine l1; //!!
CLine l2; //!!
int hzb,zzb; //!!

do {
flag=3;
cout<<"请输入一个点的横坐标和纵坐标";
cin>>hzb>>zzb;
p1 = CPoint(hzb,zzb); //!!!!!!!!!!!!!!!
cout<<"一个点已经构造\n";
cout<<"请输入另一个点的横坐标和纵坐标";
cin>>hzb>>zzb;
l1 = CLine(p1.px,p1.py,hzb,zzb); //!!!!!!!!!!!!!!
cout<<"一条直线已经构造\n";
do
{
flag=3;
cout<<"请输入第三个点的横坐标和纵坐标";
cin>>hzb>>zzb;
int temp1=(p1.px-l1.lx)*(hzb-l1.lx)+(p1.py-l1.ly)*(zzb-l1.ly);
int temp2=(p1.px-l1.lx)*(hzb-l1.lx)+(p1.py-l1.ly)*(zzb-l1.ly);
if(temp1*temp2!=0) {
cout<<"输入的三个点构不成矩形\n";
cout<<"请选择:0.退出程序\t1.只重输第三个点\t2.重输全部三个点\n";
cin>>flag;
}
} while(flag==1);
}while(flag==2);

if (flag==0) return 0;

l2 = CLine(l1.lx,l1.ly,hzb,zzb);
CJuxing j1(l1.px,l1.py,l2.px,l2.py,hzb,zzb);
cout<<"一个矩形已经构造\n";
cout<<endl;
cout<<"直线距离是:"<<l1.juli(p1,l1);
cout<<"\n矩形周长是:"<<j1.zhouchang (l1,l2);
cout<<"\n矩形面积是:"<<j1.mianji (l1,l2)<<endl;

}

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧