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

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;

时,类内的成员变量全都不是原来输入的数了, 是出了什么问题?怎么样解决?
...全文
271 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;

}
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 全国计算机等级考试二级教程《Python语言程序设计》(2018年版)被视为针对Python入门者和备考人员的核心学习材料。该资料汇总了教材内的所有编程练习答案,这些答案在Python 3.5.3环境中经过实际执行测试,从而保障了代码的准确性和应用价值。备考人员借助这些答案,能够评估自身的学习进度,并深入理解和熟练掌握Python编程的基础原理与方法。 1. Python基础理论:Python作为一门高级编程语言,因其简明扼要的语法结构和卓越的功能表现而备受推崇。基础内容涵盖了变量、数据种(例如整型、浮点型、字符串、布尔型、列表、元组、字典、集合)、逻辑控制(比如条件判断if-else,循环控制for、while)、函数的声明及使用、模块的引入等。 2. Python高级应用:Python的进阶内容涉及异常管理(try-except-finally结构),与实例(面向对象编程的基础,包含的构造、对象的生成、属性与方法的运用、继承机制、多态表现),装饰器(用于调整函数或的功能特性),上下文管理器(借助with语句实现资源管理)等。 3. 数据文件处理:Python配备了全面的文件操作功能,涉及文件的开启、数据读写、关闭操作,以及多种操作模式(例如r模式用于读取,w模式用于写入,a模式用于追加内容等)。此外,还包括文本文件与二进制文件的转换处理,以及文件的位置调整、复制和删除等操作。 4. 标准库的运用:Python的标准库资源极为丰富,比如os模块提供操作系统接口,sys模块用于获取系统参数,random模块可用于生成随机数值,datetime模块负责处...

65,213

社区成员

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

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