标题:一道计算矩形面积的题目请问我的答案哪里有问题?
只看楼主
Townman
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-3-27
结帖率:100%
已结贴  问题点数:20 回复次数:3 
一道计算矩形面积的题目请问我的答案哪里有问题?
输入矩形的长和宽。对输入的长和宽确保都在(0,50)范围之内,否则长和宽使用默认值1。
增加Area()求矩阵面积的函数,并在函数中实现打印面积功能。其主函数如下:
int main()
{
CRectangle R;
float l,w;
cin>>l>>w;
R.Set(l,w);
cout<<R.area()<<endl;
return 0;
}
以上是题目,下面是我的答案,请大神指教,谢谢!
#include<iostream>
using namespace std;

class CRectangle
{
public:
void Set(float a,float b)
{
    int l,w;
if((a>0)&&(a<50)) l=a;
else l=1;
if((b>0)&&(b<50)) w=b;
else w=1;
}

float area()
{ int l,w;
return l*w;
}

int main()
{
CRectangle R;
float l,w;
cin>>l>>w;
R.Set(l,w);
cout<<"矩形的面积:"<<R.area()<<endl;
system("pause");
return 0;
}
搜索更多相关主题的帖子: include public return 
2014-10-25 01:04
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
得分:0 
R.Set(l,w);  //无意义
R.area()     //无意义.  返回的只是初始化时候系统给的值的乘积
system("pause"); //需要用到"cstdlib"头文件

[ 本帖最后由 stop1204 于 2014-10-25 07:50 编辑 ]

hl928452957@gmail点com

2014-10-25 07:46
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
得分:15 
你的类定义少了个  };
给你修改一下代码,修改处会标记  自己对比:

程序代码:
#include <iostream>
#include "cstdlib"               //system函数支持
using namespace std;

class CRectangle
{
private:                     //私有成员,可供公有成员直接调用
    float l, w;
public:                      //公有成员
    void Set(float a, float b)
    {
                            //int l,w;  此句删除,否则下列的赋值无意义.函数运行完成  l 与 w 将被释放(free memory)
        if ((a > 0) && (a < 50)) l = a;
        else l = 1;
        if ((b > 0) && (b < 50)) w = b;
        else w = 1;
    }
    float area()
    {                        //int l,w; 删除,与上面的差不多.  
        return l * w;
    }
};
int main()
{
    CRectangle R;
    float l, w;
    cin >> l >> w;
    R.Set(l, w);
    cout << "矩形的面积:" << R.area() << endl;
    system("pause");
    return 0;
}


关于 area() 与 set() 函数使用的 l w
因为 R 是 CRectangle类对象.  类对象可以直接访问所属类的公有部分,私有部分可以通过公有部分的成员去访问.
所以上面定义的 private:
    float l, w;
就起了作用


[ 本帖最后由 stop1204 于 2014-10-25 07:59 编辑 ]

hl928452957@gmail点com

2014-10-25 07:55
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:5 
Set和area两个函数各自声明了一套l和w,运行起来自然要乱算了。最好是这两个公有函数都不要声明l和w,另外在private中单独声明,Set只负责对它们赋值,area只负责对它们调用。
2014-10-25 22:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-437667-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.236316 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved