| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 541 人关注过本帖
标题:请高手指点一下,源码哪里有问题?
取消只看楼主 加入收藏
mfs111116
Rank: 2
来 自:山东烟台
等 级:论坛游民
帖 子:28
专家分:38
注 册:2012-8-22
结帖率:100%
收藏
 问题点数:0 回复次数:3 
请高手指点一下,源码哪里有问题?
本源码来自《21天学通C++》(Jesse Liberty著)第一篇学习总结。
目的是通过一个显示菜单进行功能操作,可以画出矩形、计算面积、周长以及重新设定矩形的长、宽,最后,可以退出菜单和程序。
问题是:哪里出了错? 在输入字符型选择后,程序不停止……
#include<iostream.h>
 
enum CHOICE{DrawRect=1,GetArea,GetPerim,ChangeDimensions,Quit};//枚举型常量
class Rectangle
{
public:
    Rectangle(int width,int height);
    ~Rectangle();

    int GetHeight()const{return itsHeight;}
    int GetWidth()const{return itsWidth;}
    int GetArea()const{return itsHeight*itsWidth;}
    int GetPerim()const{return 2*itsHeight+2*itsWidth;}
    void SetSize(int newWidth,int newHeight);

private:
    int itsWidth;
    int itsHeight;

};
void Rectangle::SetSize(int newWidth,int newHeight)
{
    itsWidth=newWidth;
    itsHeight=newHeight;
}

Rectangle::Rectangle(int width,int height)
{
    itsWidth=width;
    itsHeight=height;
}
Rectangle::~Rectangle(){}

int DoMenu();
void DoDrawRect(Rectangle);
void DoGetArea(Rectangle);
void DoGetPerim(Rectangle);

int main()
{
    Rectangle theRect(30,5);

    int choice=DrawRect;
    int fQuit=false;

    while(!fQuit)  //死循环
    {
        
        choice=DoMenu();
    if((choice<DrawRect)||(choice>Quit))
        {
            cout<<"请重新选择\n";
            
            continue;
        }
        switch(choice)
        {
        case DrawRect:
            DoDrawRect(theRect);
            break;
        case GetArea:
            DoGetArea(theRect);
            break;
        case GetPerim:
            DoGetPerim(theRect);
            break;
        case ChangeDimensions:
            int newLength,newWidth;
            cout<<"\nNew width:";
            cin>>newWidth;
            cout<<"New height:";
            cin>>newLength;
            theRect.SetSize(newWidth,newLength);
            DoDrawRect(theRect);
            DoGetArea(theRect);
            
            DoGetPerim(theRect);

            break;
        case Quit:
            fQuit=true;
            cout<<"\n退出……\n\n";
            break;
        default :        //可能永远不会出现。但在本程序中,输入字母,出现循环不停            
            cout<<"选择错误\n";
            fQuit=true;
            break;

        }
    }
        
    return 0;
}
int DoMenu()
{
    int choice;

    cout<<"\n\n****Menu****\n\n";
    cout<<"(1)画出矩形。\n";
    cout<<"(2)算出面积.\n";
    cout<<"(3)计算周长.\n";
    cout<<"(4)重新设置矩形。\n";
    cout<<"(5)退出。\n\n";

    cin>>choice;
    return choice;
}
void DoDrawRect(Rectangle theRect)
{
    int height=theRect.GetHeight();
    int width=theRect.GetWidth();
    for(int i=0;i<height;i++)
    {
        for(int j=0;j<width;j++)
        {
            cout<<"*";
        }
        cout<<"\n";
    }
}

void DoGetArea(Rectangle theRect)
{
    cout<<"Area:"<<theRect.GetArea()<<endl;
}

void DoGetPerim(Rectangle theRect)
{
    cout<<"周长是:"<<theRect.GetPerim()<<endl;
}
            
搜索更多相关主题的帖子: 源码 菜单 include public return 
2012-08-22 07:04
mfs111116
Rank: 2
来 自:山东烟台
等 级:论坛游民
帖 子:28
专家分:38
注 册:2012-8-22
收藏
得分:0 
源码可以直接复制到编译器上运行,请高手帮忙看一下,应该怎么修改?
2012-08-22 07:06
mfs111116
Rank: 2
来 自:山东烟台
等 级:论坛游民
帖 子:28
专家分:38
注 册:2012-8-22
收藏
得分:0 
非常感谢
2012-08-22 14:05
mfs111116
Rank: 2
来 自:山东烟台
等 级:论坛游民
帖 子:28
专家分:38
注 册:2012-8-22
收藏
得分:0 
呵呵,新手,正在学习中,请大家多多指教。
2012-08-24 12:32
快速回复:请高手指点一下,源码哪里有问题?
数据加载中...
 
   



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

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