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; }