《C++言語基礎》実践参考——人数不定の給与類
1847 ワード
戻ってきます:賀先生の授業のリンク
【項目3-人数不定の給与類】
給与クラス(Salary)を設計し、データメンバーには従業員数(number、人数不定)とnumber従業員の給与salaryが含まれ、従業員の給与を入力し、1つずつ出力するように要求されます.
ヒント:number人の従業員の給料を固定サイズの配列で格納すると、空間の浪費を引き起こす可能性があり、空間が足りないため、従業員の人数が多すぎる応用を処理できない可能性があります.salaryをポインタタイプのメンバーとして宣言し、空間を動的に割り当てることで、適切なサイズの空間格納データを割り当てます.
[参考解答]
【項目3-人数不定の給与類】
給与クラス(Salary)を設計し、データメンバーには従業員数(number、人数不定)とnumber従業員の給与salaryが含まれ、従業員の給与を入力し、1つずつ出力するように要求されます.
ヒント:number人の従業員の給料を固定サイズの配列で格納すると、空間の浪費を引き起こす可能性があり、空間が足りないため、従業員の人数が多すぎる応用を処理できない可能性があります.salaryをポインタタイプのメンバーとして宣言し、空間を動的に割り当てることで、適切なサイズの空間格納データを割り当てます.
class Salary
{
public:
Salary(int n); //n ,
~Salary(); //
void input_salary();
void show_salary();
private:
double *salary;
int number;
};
//
……
//
int main()
{
Salary s(10);
s.input_salary();
s.show_salary();
return 0;
}
[参考解答]
#include<iostream>
using namespace std;
class Salary
{
public:
Salary(int n);
Salary(const Salary &s); // , ,
~Salary();
void input_salary();
void show_salary();
private:
double *salary;
int number;
};
Salary::Salary(int n)
{
number=n;
salary = new double[number]; // ,
}
Salary::Salary(const Salary &s)
{
number = s.number;
salary = new double[number];
for(int i=0;i<number; ++i)
*(salary+i)=*(s.salary+i);
}
Salary::~Salary()
{
delete []salary; // :
}
void Salary::input_salary()
{
int i;
cout << " "<<number<<" :" << endl;
for(i = 0; i < number; ++i)
cin >> *(salary+i);
return ;
}
void Salary::show_salary()
{
cout << " : " ;
for(int i = 0; i < number; ++i)
cout << *(salary+i)<<" ";
cout << endl;
return ;
}
int main()
{
Salary s1(10);
s1.input_salary();
Salary s2(s1);
s1.show_salary();
s2.show_salary();
return 0;
}