C++面型对象程序 (电子工业出版社)设计课后习题第三章最后两题
2013-11-14 16:26
591 查看
11.设计工人类Worker
#include<iostream>
#define MaxSize 20
#include<iomanip>
using namespace std;
class Worker
{
private:
char name[10];
char Dept[10];
int age;
Salary salary;
static int personsum;
public:
Worker():age(0),salary(){personsum++;}
void setname(char *a){strcpy(name,a);}
void setDept(char *b){strcpy(Dept,b);}
void setage(int c){age=c;}
void setsalary(double d,double i,double j,double n,double m)
{
salary.setwage (d);
salary.setsubsidy (i);
salary.setrent (j);
salary.setwatrfee (n);
salary.setelecfee (m);
}
char * getname(){return name;}
char * getDept(){return Dept;}
int getage(){return age;}
void display();
static int getpersonsum(){return personsum;}
void getdisplay()
{
salary.display();
}
};
int Worker::personsum=0;
void Worker::display()
{
cout<<name<<'\t'<<age<<'\t'<<Dept<<'\t';
}
class Salary
{
private:
double wage,subsidy,rent, waterfee,elecfee;
public:
Salary(double i,double j,double n,double m,double z);
Salary(){wage=subsidy=rent=waterfee=elecfee=0.0;}
void setwage(double i){wage=i;}
void setsubsidy(double j){subsidy=j;}
void setrent(double n){rent=n;}
void setwatrfee(double m){waterfee=m;}
void setelecfee(double z){elecfee=z;}
double getwage(){return wage;}
double getsubsidy(){return subsidy;}
double getrent(){return rent;}
double getwaterfee(){return waterfee;}
double getelecfee(){return elecfee;}
double RealSalary(){return (wage+subsidy-rent-waterfee-elecfee);}
void display();
};
Salary::Salary(double i,double j,double n,double m,double z)
{
wage=i;subsidy=j;rent=n; waterfee=m;elecfee=z;
cout<<"Salary constructor !"<<endl;
}
void Salary::display()
{
cout<<wage<<'\t'<<subsidy<<'\t'<<rent<<'\t'<<waterfee<<'\t'<<elecfee<<'\t'<<wage+subsidy-rent-waterfee-elecfee<<'\t'<<endl;
}
void main()
{
char a[10],b[10];
int c,k;
double d,i,j,n,m;
Worker worker[MaxSize];
for(k=0;k<MaxSize;k++)
{
cout<<"输入职工的姓名:\n";
cin>>a;
cout<<"输入职工的年龄:"<<endl;
cin>>c;
cout<<"输入职工的工作部门:"<<endl;
cin>>b;
cout<<"输入职工的基本工资:"<<endl;
cin>>d;
cout<<"输入职工的岗位津贴:"<<endl;
cin>>i;
cout<<"输入职工的房租:"<<endl;
cin>>j;
cout<<"输入职工的水费:"<<endl;
cin>>n;
cout<<"输入职工的电费:"<<endl;
cin>>m;
worker[k].setname(a);
worker[k].setage(c);
worker[k].setDept (b);
worker[k].setsalary (d,i,j,n,m);
}
cout<<"姓名 年龄 工作部门 基本工资 岗位津贴 房租 水费 电费 实发工资"<<endl;
for(k=0;k<MaxSize;k++)
{
worker[k].display();
worker[k].getdisplay();
}
cout<<"工人数目是:"<<endl;
cout<<Worker::getpersonsum()<<endl;
}
12.设计一个整形链表类list,能够实现链表节点的插入(insert),删除(delete),以及链表数据的输出操作(prin)。
#include<iostream>
#include<malloc.h>
typedef int ElemType;
using namespace std;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LinkList;
class list
{
private:
public:
void InitList(LinkList * &L)
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
bool insert(LinkList *&L,int i,ElemType e);
bool listdelete(LinkList *&L,int i,ElemType &e);
void print(LinkList *L);
};
bool list::insert(LinkList *&L,int i,ElemType e)
{
int j=0;
LinkList *p=L,*s;
while (j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
return false;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=e;
s->next=p->next;
p->next=s;
return true;
}
}
bool list::listdelete(LinkList *&L,int i,ElemType &e)
{
int j=0;
LinkList *p=L,*q;
while(j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
return false;
else
{
q=p->next;
if(q==NULL)
return false;
e=q->data;
p->next=q->next;
free(q);
return true;
}
}
void list::print(LinkList *L)
{
LinkList *p=L->next;
while(p!=NULL)
{
cout<<p->data<<'\t';
p=p->next;
}
cout<<endl;
}
void main()
{
LinkList *L;
ElemType e;
int i;
list a;
a.InitList(L);
a.insert(L,0,9);
a.insert(L,1,87);
a.print(L);
a.listdelete(L,i,e);
}
#include<iostream>
#define MaxSize 20
#include<iomanip>
using namespace std;
class Worker
{
private:
char name[10];
char Dept[10];
int age;
Salary salary;
static int personsum;
public:
Worker():age(0),salary(){personsum++;}
void setname(char *a){strcpy(name,a);}
void setDept(char *b){strcpy(Dept,b);}
void setage(int c){age=c;}
void setsalary(double d,double i,double j,double n,double m)
{
salary.setwage (d);
salary.setsubsidy (i);
salary.setrent (j);
salary.setwatrfee (n);
salary.setelecfee (m);
}
char * getname(){return name;}
char * getDept(){return Dept;}
int getage(){return age;}
void display();
static int getpersonsum(){return personsum;}
void getdisplay()
{
salary.display();
}
};
int Worker::personsum=0;
void Worker::display()
{
cout<<name<<'\t'<<age<<'\t'<<Dept<<'\t';
}
class Salary
{
private:
double wage,subsidy,rent, waterfee,elecfee;
public:
Salary(double i,double j,double n,double m,double z);
Salary(){wage=subsidy=rent=waterfee=elecfee=0.0;}
void setwage(double i){wage=i;}
void setsubsidy(double j){subsidy=j;}
void setrent(double n){rent=n;}
void setwatrfee(double m){waterfee=m;}
void setelecfee(double z){elecfee=z;}
double getwage(){return wage;}
double getsubsidy(){return subsidy;}
double getrent(){return rent;}
double getwaterfee(){return waterfee;}
double getelecfee(){return elecfee;}
double RealSalary(){return (wage+subsidy-rent-waterfee-elecfee);}
void display();
};
Salary::Salary(double i,double j,double n,double m,double z)
{
wage=i;subsidy=j;rent=n; waterfee=m;elecfee=z;
cout<<"Salary constructor !"<<endl;
}
void Salary::display()
{
cout<<wage<<'\t'<<subsidy<<'\t'<<rent<<'\t'<<waterfee<<'\t'<<elecfee<<'\t'<<wage+subsidy-rent-waterfee-elecfee<<'\t'<<endl;
}
void main()
{
char a[10],b[10];
int c,k;
double d,i,j,n,m;
Worker worker[MaxSize];
for(k=0;k<MaxSize;k++)
{
cout<<"输入职工的姓名:\n";
cin>>a;
cout<<"输入职工的年龄:"<<endl;
cin>>c;
cout<<"输入职工的工作部门:"<<endl;
cin>>b;
cout<<"输入职工的基本工资:"<<endl;
cin>>d;
cout<<"输入职工的岗位津贴:"<<endl;
cin>>i;
cout<<"输入职工的房租:"<<endl;
cin>>j;
cout<<"输入职工的水费:"<<endl;
cin>>n;
cout<<"输入职工的电费:"<<endl;
cin>>m;
worker[k].setname(a);
worker[k].setage(c);
worker[k].setDept (b);
worker[k].setsalary (d,i,j,n,m);
}
cout<<"姓名 年龄 工作部门 基本工资 岗位津贴 房租 水费 电费 实发工资"<<endl;
for(k=0;k<MaxSize;k++)
{
worker[k].display();
worker[k].getdisplay();
}
cout<<"工人数目是:"<<endl;
cout<<Worker::getpersonsum()<<endl;
}
12.设计一个整形链表类list,能够实现链表节点的插入(insert),删除(delete),以及链表数据的输出操作(prin)。
#include<iostream>
#include<malloc.h>
typedef int ElemType;
using namespace std;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LinkList;
class list
{
private:
public:
void InitList(LinkList * &L)
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
bool insert(LinkList *&L,int i,ElemType e);
bool listdelete(LinkList *&L,int i,ElemType &e);
void print(LinkList *L);
};
bool list::insert(LinkList *&L,int i,ElemType e)
{
int j=0;
LinkList *p=L,*s;
while (j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
return false;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=e;
s->next=p->next;
p->next=s;
return true;
}
}
bool list::listdelete(LinkList *&L,int i,ElemType &e)
{
int j=0;
LinkList *p=L,*q;
while(j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
return false;
else
{
q=p->next;
if(q==NULL)
return false;
e=q->data;
p->next=q->next;
free(q);
return true;
}
}
void list::print(LinkList *L)
{
LinkList *p=L->next;
while(p!=NULL)
{
cout<<p->data<<'\t';
p=p->next;
}
cout<<endl;
}
void main()
{
LinkList *L;
ElemType e;
int i;
list a;
a.InitList(L);
a.insert(L,0,9);
a.insert(L,1,87);
a.print(L);
a.listdelete(L,i,e);
}
相关文章推荐
- C++限定只能栈创建对象,只能堆创建对象。
- codeforces-363A. Soroban
- VC++ Runtime Error 异常捕获之不挂的程序
- c++ 虚函数 const等的一些小问题记录
- Topcoder几例C++字符串应用
- 1818[成绩转换]
- ubuntu12.04 安装eclipse c/c++工具
- C语言常用算法
- 一个程序在C语言和C++语言环境下得到不同结果
- Linkedin C++ group 的拒绝邮件
- Zeroc Ice3.4.2 c++ demo Icestorm之clock
- 调用C++类的private函数
- C++ 读取图像(二进制)保存到mysql blob
- 函数模板C++
- C++中extern “C”含义深层探索
- [osg]源码分析:OSG中的智能指针osg::ref_ptr
- 【C/C++】概念: VC虚函数布局引发的问题
- HDU1867.cpp KMP中发生不匹配时,j=next[j],j的含义
- 【C/C++】概念: VC虚函数布局引发的问题
- C++. Operator overloading.Fraction's operation