实验一:32位整数的机器所能表示的整数范围大致是-20亿到+20亿,在这个范围内的操作一般不会出现问题。但是有很多应用程序可能要使用超出上述范围的整数。使用C++建立一个新的数据类型HugeInt,该类使用short integer[40]表示一个整数,其中一个数组元素表示十进制的一位。请实现该类。
实验二:某工厂有一名老板Boss,及若干工人。工人分为小时工HourlyWorker、计件工PieceWorker、销售员CommissionWorker。小时工每周工作40小时,超过40小时部分的报酬是平时的1.5倍;计件工是按生产的工件计算报酬的,每件的报酬是固定的,假设他只生产一种类型的工件;销售员每周有小部分固定的基本工资加上每周销售额的固定百分比;老板每周有固定的薪水。为该工厂设计一个简单的当前周的工资管理信息系统。要求如下:
1.设计实现一个简单的类Employee,它存储雇员的工号、姓(成员firstName)和名(成员lastName)。从雇员类Employee派生出小时工类HourlyWorker、计件工类PieceWorker、销售员类CommissionWorker及老板类Boss。
2.设计实现一个工厂类(Factory),它存储工厂名(factoryName)、工厂中的员工人数(含老板)等信息。及一个Employee指针数组存放工厂的所有员工信息。
3.可以增加一名工人。增加工人时,根据工人的类别,输入相应的信息。如增加的是小时工,则需要输入该小时工的工号、姓、名、本周工作小时数及每小时工资额等信息。
4.可以根据工号删除一名工人
5.可以根据工号修改工人的信息
6.可以显示出所有员工的本周工资信息
7.显示出一些统计信息,如本周支付所有员工的工资总额;小时工的工资总额、最高、最低、平均工资;计件工的工资总额、最高、最低、平均工资;销售员的工资总额、最高、最低、平均工资
实验三:装箱问题求解:设有编号为0、1、…、n-1的n种物品,体积分别为v0、v1、…、vn-1。将这n种物品装到容量都为V的若干箱子里。约定这n种物品的体积均不超过V,即对于0≤i<n,有0<vi≤V。不同的装箱方案所需要的箱子数目可能不同。装箱问题要求使装尽这n种物品的箱子数要少。算法思想:本实验可以使用贪婪法解决。该算法依次将物品放到它第一个能放进去的箱子中,该算法虽不能保证找到最优解,但还是能找到非常好的解。不失一般性,设n件物品的体积是按从大到小排好序的,即有v0≥v1≥…≥vn-1。如不满足上述要求,只要先对这n件物品按它们的体积从大到小排序,然后按排序结果对物品重新编号即可。装箱算法简单描述:
{ 输入箱子的容积;
输入物品种数n;
按体积从大到小顺序,输入各物品的体积;
预置已用箱子链为空;
预置已用箱子计数器box_count为0;
for (i=0;i<n;i++)
从已用的第一只箱子开始顺序寻找能放入物品i 的箱子j;
if(已用箱子都不能再放物品i)
{ 另用一个箱子,并将物品i放入该箱子;
box_count++;
}
else
将物品i放入箱子j;
}
}
上述算法能求出需要的箱子数box_count,并能求出各箱子所装物品。
若每只箱子所装物品用链表来表示,链表首结点指针存于一个结构中,该结构记录尚剩余的空间量和该箱子所装物品链表的首指针。另将全部箱子的信息也构成链表。下面两个结构分别表示物品和箱子结点。
struct Goods //物品
{ int no; //物品编号
int vol; //物品体积
struct Goods *next;//指向同一个箱子存放的下一个物品
};
struct Box //箱子
{ int remainder; //该箱子的剩余容量
struct Goods *head;//该箱子存放的物品链头指针
struct Box *next; //下一个已用箱子
};
回答好再加分
大哥顺便把后面两个也做了吧! 已经很感激了!