| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:[求助]有没有更好的方法设计这个类
取消只看楼主 加入收藏
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
 问题点数:0 回复次数:2 
[求助]有没有更好的方法设计这个类

这道题,我想了很久,但是因为没答案,所以没办法确定是不是正确的,假如你们来做这个题,你们会怎么设计呢?
题完整如下:(计帐)假设你是一个金融家,你在每年的一月,四月,和九月购买X公司100股股票,每年六月和十一月卖掉100股。这些月份中每一股的价格是:
Jan Apr Jun Sep Nov
$10 $30 $20 $50 $30
确定你的资金收益或损失总量。要求使用队列(先进先出)。你在本年结束时拥有的100股不要参与计算。
我的设计是这样的:
const int maxqueue = 12;
typedef int Queue_entry;
enum Error_code { success,overflow,underflow };
class Queue
{
public:
Queue();
bool empty() const;
virtual Error_code append(const Queue_entry &x);//添加一个元素的引用
virtual Error_code serve();//删除第一个元素
Error_code retrieve(Queue_entry &x) const;//对第一个元素进行引用(x)
protected:
int count;
int front,rear;
Queue_entry entry[maxqueue];
};
........
#include "queue.h"
#include <iostream>
using namespace std;
int main()
{
Queue q;
q.append(10);//添加一月的股价
q.append(30);//添加四月的股价
int i;//为了对 队列第一个元素的引用定义了次变量
q.retrieve(i);//引用一月的股价
i = (20 -i)*100;//将卖掉的股价减去购买的股价,即为收益
q.serve();//删除第一个元素
q.append(50);//添加九月的股价
int j;//为了对 队列第一个元素的引用定义了次变量
q.retrieve(j);//引用一月的股价
q.serve();//删除第一个元素
j = (30-j)*100;//同上
int sum = i + j;//两次收益的和,即为收益总量
cout<<sum<<endl;
return 0;
}
我感觉这个不大合理的原因是:如果每一月都有卖掉,那我就要定义十二个变量,如上面的(i,j.....),这样好象麻烦?
不知道大家有没有更好的设计方法?

[此贴子已经被作者于2006-6-8 18:31:32编辑过]

搜索更多相关主题的帖子: 设计 
2006-06-08 16:12
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 
你的类设计是可以的。
就比如上面那个题:一月购买时把信息放进队列。四月购买时把信息再放进队列。到了六月要卖掉时,就把队列第一个位置放的100股卖掉。九月又购买把股票放进队列。到十一月时,就把队列的第一个位置的股票拿出来卖掉(这时的股票是第二次放进,因为第一次的股票已经被拿出卖掉了)。最后这个队列里还有九月购买的股票100股。(因为他没被拿出卖掉)
1月 :100股 进队
4月 :100股 进队
6月 :取出对中100股卖掉
9月 :100股 进队
11月:取出对中100股卖掉
----------最后队列中还存有的100股不用参与计算

2006-06-08 18:01
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 

我要的是用队列的思想

2006-06-08 18:20
快速回复:[求助]有没有更好的方法设计这个类
数据加载中...
 
   



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

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