C++编程题,急,定义定义并实现一个矩形类类,数据成员有宽度、高度和组成矩形的字符

大神们帮帮忙【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:303,721贴子:
大神们帮帮忙收藏
请定义一个矩形类(Rectangle),私有数据成员为矩形的长度len和宽度(wid)无参构造函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长,求矩形面积,取矩形长度和宽度。修改矩形长度和宽度为对应形参的值,输出矩形尺寸等公有成员函数。要求输出矩形尺寸的格式为length长度width宽度
自信一个月的老菜鸟献丑了#include&iostream&class Rectangle{private:float len,public:Rectangle() :len(0), wid(0){}Rectangle(float i, float j){ len = wid = }float mj(){ return len* }float zc(){ return 2 * (len + wid); }void show(){ std::cout && len && & & && wid && & & && mj() && & & && zc(); }void set(float i, float j){ len = wid = }};void main(){Rr.set(2.0, 3.0);r.show();}
你写的是错的,运行一下就知道
登录百度帐号定义一个矩形类 完美作业网 www.wanmeila.com
C++定义并实现一个矩形类 #include#includeclass Rectangle{public:Rectangle(double,double,double,double);Rec常angle();double Width();double Height();double Girth();double Area();private:double x0,y0,x1,y1;};Rectangle::Rectangle(double a,double b,double c,double d){x0=a;y0=b;x1=c;y1=d;}Rectangle::Rectangle(){cout<<"输入矩形左下角坐标"<<cin>>x0>>y0;cout<<"再输入矩形右上角坐标"<<cin>>x1>>y1;}double Rectangle::Width(){return fabs(x1-x0);}double Rectangle::Height(){return fabs(y1-y0);}double Rectangle::Girth(){return (this->Width()+this->Height())*2;}double Rectangle::Area(){return this->Width()*this->Height();}void main(){Rectangle test(0.11,100,56,999.154);cout<<"矩形长为:"<<test.Width()<<" "<<"宽为:"<<test.Height()<<endl<<"矩形周长为:"<<test.Girth()<<endl<<"矩形面积为:"<<test.Area()<<}
定义一个Point类为一个点,再定义一个Rectangle类表示矩形。 class Rectangle{Ppublic Rectangle(Point p1, int width, int height){this.p =this.width =this.height =}main(){Rectangle r = new Rectangle(new Point(0,0), 6,4);}}class Point{public Point(int x, int y){this.x =this.y =}}是否是这意思?
Java定义一个Rectangle类 class Rectangle {ppublic Rectangle(double width, double height) {this.width =this.height =}public double getC() {return (width + height) * 2;}public double getS() {return width *}public double getWidth() {}public void setWidth(double width) {this.width =}public double getHeight() {}public void setHeight(double height) {this.height =}}public class Test {public static void main(String[] args) {Rectangle rect = new Rectangle(4, 5);System.out.println("周长=" + rect.getC() + "\n面积=" + rect.getS());}}
C++编程:用面向对象的方法求矩形面积. 要求编写一个矩形Rectangle类 #includeclass Retangle{public:Retangle(){Length=0;Width=0;}void setLW(){float x,y;cout<<"input the length and width:"<<cin>>x>>y;Length=x;Width=y;}void Area(){cout<<"Area="<<Length*Width<<}private:float Lfloat W};void main(){Rabc.setLW();abc.Area();}
c++ 定义一个矩形类CRectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员 #include class CRclass CTvoid calrect(CRectangle rec);void caltri(CTriangle tri);class CRectangle{public:CRectangle(int t,int l,int b,int r):top(t),left(l),bot(b),right(r){}friend void calrect(CRectangle rec);protected:int top,int bot,};class CTriangle{public:CTriangle(int h,int b):height(h),base(b){}friend void caltri(CTriangle tri);protected:};void calrect(CRectangle rec){std::cout<<(rec.bot-rec.top)*(rec.right-rec.left)<<std::}void caltri(CTriangle tri){std::cout<<(tri.base*tri.height/2)<<std::}int main(){CRectangle rec(0,0,5,5);CTriangle tri(3,4);calrect(rec);caltri(tri);return 0;}
java 定义一个矩形类,有长、宽2个属性,有成员函数计算矩形的面积。 public class Rectangle
{private伐public Rectangle(){}public Rectangle( int w, int h) {this.w =this.h =}public double area() {double a=this.w;double b=this.h;return a*b;}}
java,定义一个长方形类 public class Test {public static void main(String[] args) {Rectangle r = new Rectangle(5, 4);System.out.println("Circle for rectangle is: " 顶 r.circle());System.out.println("Area for rectangle is: " + r.area());}}class Rectangle{ppublic Rectangle(double length, double width){this.length =this.width =}public double getLength() {}public double getWidth() {}public void setLength(double length) {this.length =}public void setWidth(double width) {this.width =}public double circle(){return 2 * (width + length);}public double area(){return width *}}------------------------Circle for rectangle is: 18.0Area for rectangle is: 20.0
采用C++定义一个矩形 类(Rectangle)。 class Rectangle{private:public:Rectangle(int nl = 0,int nw = 0):length(nl),width(nw) {}~Rectangle() {}public:void set(int nl,int nw ) {length =width =}void get(int& nl,int& nw) {nl =nw =}int area() {return length *}};
定义一个类rectangle,描述一个矩形,包含有长、宽两种属性,以及计算面积的方法; class Rect{private int _private int _public Rect(int len,int width){this._len =this._width =}//定义面积只读属性public int Area{Get{return _lenth * _}}//返回长方形面积的静态方法public static int CalcArea(int len,int width){return len*}}
定义一个矩形类,属性包括长和宽,在构造放法中将长宽初始化,再定义一个 public class Area{public Area(int length,int width){this.length=this.width=}public int getArea(){//计算面积return length*}public static void main(String[] args){Area a=new Area(20,10);int area1=a.getArea();//计算第一个长方形面积System.out.println("第一个长方形的面积为:"+area1);Area b=new Area(6,3);//计算第二个长方形面积int area2=b.getArea();System.out.println("第二个长方形的面积为:"+area2);}}C++]LeetCode: 133 Largest Rectangle in Histogram(最大矩形面积)
Given n non-negative integers representing the histogram&#39;s bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.
Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3].
The largest rectangle is shown in the shaded area, which has area = 10 unit.
For example,
Given height = [2,1,5,6,2,3],
return 10.
Anwser 1: Brute Force
思路:穷举法,对于直方图的每一个bar, 我们穷举所有的左边界,将面积最大的那个记录下来。时间复杂度为O(N^2).但是单纯的穷举法在leetcode会TLE. 所有我们需要一些剪枝的方法,比如找到合适的右边界。我们发现当height[k] &= height[k-1]时,无论左边界取什么值,选择height[k]作为右边界总会比选择height[k-1]所形成的面积大。因此,在选择右边界时,我们首先找到一个height[k] & height[k-1]的k, 然后取k-1作为右边界,跳过中间的bar, 然后穷举所有的左边界,找到最大面积。
穷举法还有一个思路,就是以当前bar为矩形高度,然后左右两个指针分别向数组两边移动,直到高度低于当前bar高度截止,然后用当前bar的高度乘以两边走的宽度就是最大面积。因为我们对所有bar都计算了以自己为目标高度的最大矩阵,所以最好的结果一定会取到。但是同样,未经剪枝的还是超时。
Attention:
1. 穷举时,我们需要维护一个从当前k 向前的最小高度。
int lowest = height[i];
for(int j = j &= 0; j--)
lowest = min(height[j], lowest);
2. 注意剪枝的方法
for(int k = i + 1; k & height.size(); k++)
if(height[k] & height[k-1])
i = k - 1;
class Solution {
int largestRectangleArea(vector &height) {
int maxarea = 0;
for(int i = 0; i & height.size(); i++)
for(int k = i + 1; k & height.size(); k++)
if(height[k] & height[k-1])
i = k - 1;
int lowest = height[i];
for(int j = j &= 0; j--)
lowest = min(height[j], lowest);
int curarea = lowest * (i - j + 1);
maxarea = max(maxarea, curarea);
Answer 2: 栈 优化算法
思路:我们维护一个栈,这个栈从低向上的高度依次是递增的,如果遇到当前bar的高度比栈顶元素低,那么就出栈直到满足条件,这个过程中,我们不断把出栈的栈顶元素当做最低高度计算最大面积。关键问题在于出栈时,如何确定出栈元素所对应的高度的最大范围是多少。如果栈为空,那么说明到目前为止的所有元素(当前下标元素除外)都比出栈元素高度要大(否则栈内还会有元素),那么矩阵面积就是栈顶元素高度h[t] * 当前下标i . 如果栈不为空,那么就是从当前栈顶元素的下一个到当前下标元素之前都比出栈元素高度要大,因为当前栈顶元素是第一个比出栈元素小的。具体可以看下这幅图:
另外一个细节需要注意的是,弹栈过程中面积的计算。
h[t] * (stack.isEmpty() ? i : i - stack.peek() - 1)
h[t]是刚刚弹出的栈顶端元素。此时的面积计算是h[t]和前面的&上流社会&能围成的最大面积。这时候要注意哦,栈内索引指向的元素都是比h[t]小的,如果h[t]是目前最小的,那么栈内就是空哦。而在目前栈顶元素和h[t]之间(不包括h[t]和栈顶元素),都是大于他们两者的。
我们需要注意的是,最后要对剩下的栈做清空并判断,因为算法每次是对于前面的元素面积进行判断,如果循环结束后如果栈内仍然有元素,还是要继续维护面积直到栈为空。
class Solution {
int largestRectangleArea(vector &height) {
int maxarea = 0;
//栈顶元素
int area_with_
//存储以栈顶元素作为最短板的面积
int i = 0;
while(i & height.size())
if(stk.empty() || height[i] &= height[stk.top()])
stk.push(i++);
tp = stk.top();
stk.pop();
area_with_tp = height[tp] * (stk.empty() ? i : i - stk.top() - 1);
maxarea = max(maxarea, area_with_tp);
//如果栈仍然非空 继续处理
while(!stk.empty())
tp = stk.top();
stk.pop();
area_with_tp = height[tp] * (stk.empty() ? i : i - stk.top() - 1);
maxarea = max(maxarea, area_with_tp);
这道题有两篇博文,可以帮助理解。
Largest Rectangle in Histogram
Largest Rectangular Area in a Histogram | Set 2
这道题比较绕,也比较难理解,需要仔细想想。优化的方法只需要扫描一遍,时间复杂度是O(N)、空间复杂度是栈的大小,最坏是O(N)。
这道题还有个扩展题目 Maximal Rectangle, 利用这道题作为子程序,是一道比较复杂的题目。一、概念题 1.类和对象有什么区别和联系? 2.什么是类的实现? 3.this指针的概念是什么? 4.为什么要引入构造函数和析构函数? 5.什么时候需要自定义拷贝构造函数?若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题? 6.什么是堆对象?创建和回收堆对象的方法是什么? 7.为什么需要静态数据成员?静态数据成员的定义和初始化方法是什么? 8.什么是静态成员函数?静态成员函数和非静态成员函数有什么区别? 9.结构struct和类class有什么异同? 10.比较类的三种继承方式public、protected、private之间的区别。 11.派生类构造函数和析构函数执行的次序是怎样的? 12.什么叫虚基类?有什么作用? 13.什么是多态性,在C++中是如何实现多态的? 14.什么是抽象类,其有何作用?抽象类的派生类是否一定要给出纯虚函数的实现? 15.在C++中能否声明虚构造函数,为什么?能否声明虚析构函数,有什么作用? 16.典型的Windows应用程序结构有哪些? 17.什么是消息?什么是消息映射? 18.文档类的主要作用是什么?视图类提供的主要函数有哪些? 19.简述利用ClassWizard是如何添加消息映射函数的。 20.非模式对话框和模式对话框有何区别? 二、填空题 1.拷贝构造函数使用______作为参数初始化创建中的对象。 2.在C++中,对于构造函数和析构函数来说,______是可以重载的,而______是不可以重载的。 3.B类中包含一个A类的成员a,则生成B类的对象时构造函数的调用顺序为______。 4.类的每一个成员函数(静态成员函数除外)都有一个隐含的参数,叫做______。假设类名为A,则该参数的类型为______。 5.类的静态成员分为______和______。 6.声明友元的关键字是______。 7.如果类A继承了B,则类A称为______,类B称为______。 8.派生类对基类的继承有三种方式:______、______和______。 9.如果只想保留公共基类的一个拷贝,就必须使用关键字________把这个公共基类定义为虚基类。 10.派生类的成员有两种来源,即______和______。 11.要想访问基类的private成员变量,只能通过基类提供的______进行间接访问。 12.重载运算符应仍保持其原有的操作数个数、结合性和______。 13.对于双目运算符,若重载为类的成员函数,有______个参数;若重载为友元函数,则有______个参数。 14.后缀\重载为类的成员函数(设类名为A)的形式为______,重载为类的友元函数(设类名为A)的形式为______。 15.设有一时间类Time,现欲用成员函数方法重载运算符+,实现一个时间与一个整数的相加运算,所得结果为一个新时间,则成员函数的声明语句为______。 16.C++语言支持的两种多态性分别是编译时的多态性和______的多态性。 17.联编有两种方式,即______和______。 18.抽象类必须至少包含一个______。 21.Windows系统中消息的主要类型有______、______和______。 22.当用户在窗口中按下鼠标左键时,Windows系统就会自动发送______消息给该窗口,如果程序要对此消息作出反应,则程序中应包含类似______函数。 23.OnDraw()函数有一个指向______类的指针参数,通过该参数可以直接向视图输出。 24.应用程序将任何东西画到设备中之前,必须明确索取一个______。 25.对话框分为______和______两种。 26.对话框的初始化工作一般在______和______中完成。 27.MFC中公用对话框有______、______、______、______和______。 28.视图派生类可以选择______类作其基类,可以实现文本编辑功能。 29.对于文档类,数据成员的初始化工作是在______函数中完成的。 30.如果修改了文档类中的数据,并要求重新显示,要用______或______发出重画消息,引起对OnDraw()的调用。 31.当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到______的开始位置。 32.假定x和y为整型,其值分别为16和5,则a/y和double(x)/y的值分别为______ 和
______。 33.strlen(“apple”)的值为______。 34.C++程序运行时的内在空间可以分为全局数据区,堆区,栈区和______区。 35.假定a是一个一维指针数组,则a+i所指对象的地址比a大______字节。 36.如果一个派生类只有一个唯一的基类,则这样的继承称为______。 37.假定AA是一个类,“AA * abc()”是该类中的一个成员函数的原型,在该函数体中______向*this或其成员赋值。 38.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为______。 39.假定用户为类AB定义了一个构造函数“AB(int aa){a=}”,该构造函数实现对数据______的初始化。 40.作为类的成员函数重载地个运算符时,参数表中只有一个参数,说明该运算符有______个操作数。 41.C++有两种联编方式,其中在程序编译时的联编叫做______联编 42.虚函数可以是另一类的______函数 43.定义虚函数需要用______关键字 44.将函数“void vf()”定义为纯虚数的格式是virtual void vf()______ 45.拥有纯虚函数的类就是______,该类不能产生类的实例 46.派生类没有重载基类的纯虚函数,则此派生类也是______ 47.有如下程序 #include
class CSAI_A {
virtual void fun(){cout<<\}; class CSAI_B:public CSAI_A {
virtual void fun(){CSAI_A::fun();cout<<\}; void
main() { CSAI_A
*p=new CSAI_B; p->fun(); } 执行这个程序的输出结果是()答案:______ 48. 有如下程序 #include
const int T=8;
void main()
int i,s=0;
for(i=1;i<=T;i++){
cout<<s<<' ';
运行结果:______ 49. 有如下程序 int ff(int x,int y){
cout<<x<<'+'<<y<>z;
if(x+y==z) return 1; else return 0;
函数功能:______ 50. 有如下程序 char *f(char *s){
int n=strlen(s);
char * r=new char[n+1];
for(int i=0;i<n;i++)
if(s[i]>='a' && s[i]<='z')r[i]=s[i]-'a'+'A';
else r[i]=s[i];
r[n]='\\0';
函数功能:______ 51.C++虚函数有两种调用方式,分别是______和多态调用方式 52.当运算符重载为成员函数时,对象本身就是______,不在参数表中显示地出现。 53.若以成员函数形式,为类CSAI重载“double”运算符,则该运算符重载函数的原则是______ 54.在表达式“x+=y”中,“+=”是作为非成员函数重载的运算符,若是使用显式的函数调用代替直接使用运算符“+=”,这个表达式还可以表示为______ 55.将运算符“>>”重载为类CSAI的友元函数的格式是:friend instream& operator >>______ 56.this指针______破坏类的封装性。 57.通过指向基类的指针调用派生类对象的函数时,采用______调用。 58.下面是对按从小到大排列的有序数组a[n]中进行二分查找x的算法,若查找成功返回该元素的下标,否则返回-1。 int BinnarySearch(int a[],int n,int x)
int low=0,high=n-1; //定义并初始化区间下界和上界变量
//定义保存中点元素下标的变量
while(low<=high){
mid=(low+high)/2;
if(x==a[mid])
else if(x<a[mid])high=mid-1;
return -1; } 59.请补充完整如下的类定义:
char *a; public:
//定义无参构造函数,使A的值为空
A(char *aa){
a= ______ ;
//进行动态存储分配
strcpy(a,aa);
//用aa所指字符串初始化a所指向的动态存储空间
//定义析构函数,删除a所指向的动态存储空间
}; 三、编程题 1.创建一个Employee类,该类中有字符数组表示姓名、街道地址、市、省和邮政编码。 把表示构造函数、ChangeName函数、Display函数的函数原型放在类定义中,构造函数初始化每个成员,Display函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。 2.设计并测试类Point,其数据成员是直角坐标系的点坐标。友元函数distance用来计算两点间的距离。 3.定义一个Rectangle类,有宽width、长length等属性,重载其构造函数Rectangle、Rectangle(int width , int length)。 4.编写一个程序,设计一个Cdate类,它应该满足下面的条件。 ⑴ 用这样的格式输出日期:日-月-年。 ⑵ 输出在当前日期上加两天后的日期。 ⑶ 设置日期。 5.按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。
int f(int a[],int n) 6.根据下面类中Sum函数成员的原型和注释写出它的类外定义。
void InitAA(int aa[],int nn,int ms) {
if(nn>ms){cout<<\
a=new int[MS];
for(int i=0;i<n;i++)a[i]=aa[i];
int Sum();//求出并返回数组a中前n个元素之和
}; 7.定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。 8.下列Shape类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。请从Shape类派生三角形类(Triangle)、矩形类(Rectangle),并给出具体的求面积函数。 class Shape{
virtual float area()=0; };
float total(Shape *s[],int n)
float sum=0.0;
for(int i=0;iarea();
} 9.声明一个Shape类(形状)基类,它有两个派生类:Circle(圆)和Square(正方形),要求如下。 ⑴ 根据给出的圆心坐标计算圆的面积。 ⑵ 根据给出的正方形中心坐标和一个顶点坐标计算该正方形的面积。 提示:Shape类的数据成员包括中心的坐标,Circle类和Square类由Shape类派生,Circle类新增一个数据成员,即圆的半径,Square类新增两个数据成员,即顶点坐标。 1.解答要点:类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。类是对某一类对象的抽象,而对象是某一种类的实例。周热销排行
用户评论(0)
在此可输入您对该资料的评论~
添加成功至
资料评价:}

我要回帖

更多关于 矩形的定义性质判定 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信