1.类 ModClass仅有一个整数资料成员 datival,其取值范围为 0~6,构造函数取任意正整数v,将除以7后的余数赋值给 dataval, datival =v %7; 加法运算符+实现两个对象相加,将两个对象的 datival 的值相加后并取除7后的余数 例如: Modclass a(10), Modclass b(6),C; C=a+b;(3+6)/7=2; class modClass i private int atayal public: Modclass(int v=0); ModClass operator+(const ModClass &x); int Getvalue ( void)
1. 类 ModClass 仅有一个整数资料成员 dataval,其取值范围为 0~6, 构造函数取任意正整数 v ,将v 除以 7 后的余数赋值给 dataval, dataval = v % 7; 加法运算符 + 实现两个对象相加,将两个对象的 dataval 的值相加后并取除7后的余数 例如: ModClass a(10), ModClass b(6), c; c = a + b; // (3+6)/7 = 2; class ModClass { private: int dataval; public: ModClass(int v=0); ModClass operator+(const ModClass &x); int GetValue(void); }
(1)实现以上类中各成员函数 (2)以友元的形式声明并实现运算符*,该运算符将两个对象的 datava|值相乘后取除以7的余数 (3)写一个函数 Mod Class inverse( Mod class&x) 形参Ⅹ的 datival取非0值,该函数返回对象y使其满足x*y 1(y称为ⅹ的倒置)(提示:将值为1~6的对象依次跟对象 相乘满足条件的其中之一就是X的倒置) (4)重载类型转换函数 operator int(;用于取代 Getvalue()该 运算符通过返回 datival的值将一个 Modclass类型对象转 换为一个整数 (5)写一个函数 void Solve ModClass a, ModClass &x, ModClass b) 用于求关于ⅹ的方程aX=b
(1) 实现以上类中各成员函数 (2) 以友元的形式声明并实现运算符 * , 该运算符将两个对象的 dataval 值相乘后取除以7的余数 (3) 写一个函数 ModClass Inverse(ModClass &x) 形参 x 的dataval取非0值,该函数返回对象 y, 使其满足 x*y = 1(y 称为 x 的倒置),(提示:将值为1~6的对象依次跟对象 x 相乘,满足条件的其中之一就是 x 的倒置) (4) 重载类型转换函数 operator int(); 用于取代 GetValue().该 运算符通过返回 dataval 的值将一个 ModClass 类型对象转 换为一个整数 (5) 写一个函数 void Solve(ModClass a, ModClass &x, ModClass b); 用于求 关于 x 的方程 ax = b
ModClass: ModClass(int vi dataval =v /07. ModClass ModClass: operator+(const Mod Class &xt return ModClass(dataval +X. dataval) int ModClass GetValue(void)t return dataval ModClass operator (const ModClass &x, const ModClass &yi return ModClass(x. dataval y dataval) ModClass: operator into t return atayal
ModClass::ModClass(int v) { dataval = v % 7; } ModClass ModClass::operator+(const ModClass &x) { return ModClass(dataval + x.dataval); } int ModClass::GetValue(void) { return dataval; } ModClass operator*(const ModClass &x, const ModClass &y) { return ModClass(x.dataval * y.dataval); } ModClass::operator int() { return dataval; }
ModClass Inverse ModClass &xi ModClass prod, value; for(int i=l; i< 7; i++)i value= ModClass(i prod =X value if(prod. GetValueo==1 break return valuer void Solve ModClass a, ModClass &x, ModClass b)t x=b* Inverse(a)
ModClass Inverse(ModClass &x) { ModClass prod, value; for(int i=1; i < 7; i ++) { value = ModClass(i); prod = x * value; if(prod.GetValue() == 1) break; } return value; } void Solve(ModClass a, ModClass &x, ModClass b) { x = b * Inverse(a); }
void maino i ModClass a(10), b(6),,d, x c=atb d= a* b cout <<a=<< int(a<< , b=<< int (b)<< endl; cout << a+b=<< C. GetValueo<< endl; cout <<a* b=<< int(d)<< endl; Solve( a, x, b); cout < X=<< int(x)<< end;
void main() { ModClass a(10), b(6), c, d, x; c = a + b; d = a * b; cout << “a=“ << int(a) << “, b=“ << int(b) << endl; cout << “a+b=“ << c.GetValue() << endl; cout << “a*b=“ << int(d) << endl; Solve(a, x, b); cout << “x=“ << int(x) << endl; }
2.编写一个模板函数Copy template void copy(Ta[],Tb,intn);∥数组b复制到a写一个主程 序测试copy函数 (1) int aint6],Bint6]={1,3,5,7,9,11} (2) struct Student t int num; double score: } Student Astudent [3] Student student[3]={{100,88},{110,76},{130,92}
2. 编写一个模板函数 Copy template void copy(T a[], T b[], int n); // 数组b复制到a,写一个主程 序测试 copy 函数 (1) int Aint[6], Bint[6] = {1, 3, 5, 7, 9, 11}; (2) struct Student { int num; double score; }; Student Astudent[3]; Student Bstudent[3] = {{100, 88}, {110, 76}, {130, 92}};
template void copy (t all, t bll, int ni for(int i=0; i< n; i++) a++=*b++; struct Student t int num; double score void maino { int aint[6]J,Bint[6]={1,3,5,7,9,11}; Student Astudent[3] Student student[3]={{100,88},{110,76},{130,92}}
template void copy(T a[], T b[], int n) { for(int i = 0; i < n; i ++) *a++ = *b ++; } struct Student { int num; double score; }; void main() { int Aint[6], Bint[6] = {1, 3, 5, 7, 9, 11}; Student Astudent[3]; Student Bstudent[3] = {{100, 88}, {110, 76}, {130, 92}};
copy aint, bint) copy (astudent, Student) for(int i=0; i<6; i++)cout < Aint[]<< cout < endl: for(int i=0; i<6; i++)i cout < Astudent[ num < < Astudent[].score << cout < end
copy(Aint, Bint); copy(Astudent, Bstudent); for(int i=0; i<6; i++) cout << Aint[i] << “ “; cout << endl; for(int i=0; i<6; i++) { cout << Astudent[i].num << “ “ << Astudent[i].score << “, “; } cout << endl; }
3.编写一个模板类 DataStore,该类具有以下一些数据成员 int insert (T elt):向具有5个T类型的元素的私有数组 dataElement中插入元素et,数组中下一个可插入的位置 由数据成员loc给出,loC也是数组中数据个数,如果数组 中没有剩余空间,则返回0 int find(Tet):在数组中査找元素et,如果找到,则返回该元 素在数组中的下标,否则返回-1 int numelts(void):返回数组中存储元素个数 T& GetData(intn):返回数组中位置n处元素,如果n超出返回, 则警告
3. 编写一个模板类 DataStore,该类具有以下一些数据成员 int Insert(T elt):向具有5个T类型的元素的私有数组 dataElement 中插入元素 elt,数组中下一个可插入的位置 由数据成员 loc 给出,loc 也是数组中数据个数,如果数组 中没有剩余空间,则返回 0; int Find(T elt):在数组中查找元素 elt, 如果找到,则返回该元 素在数组中的下标,否则返回-1 int NumElts(void):返回数组中存储元素个数 T &GetData(int n):返回数组中位置n处元素,如果n超出返回, 则警告