#include <iostream>
#include <string>
using namespace std;
class NaturalNumber
{
private:
int n;
public:
void setValue (int x);//置數據成員 n 的值,要求判斷是否是正整數
int getValue(); //返回私有數據成員 n的值
bool isPrime(); //判斷數據成員 n 是否爲素數,是返回 true,否則返回 false
void printFactor(); //輸出數據成員 n的所有因子,包括 1 和n 自身
bool isPerfect(); //判斷數據成員 n 是否爲完全數。若一個正整數 n 的所有小於 n 的因子之和等於n,
//則稱 n 爲完全數, 如 6=1+2+3 是完全數。
bool isReverse(int x);//判斷形式參數 x是否爲數據成員 n 的逆向數(例 321 是 123 的逆向數)。
bool isDaffodil(int x); //判斷形式參數 x 是否是水仙花數。水仙花數的各位數字立方和等於該數,
//如 153=1*1*1+5*5*5+3*3*3
void printDaffodils(); //顯示所有大於 1,且小於數據成員 n 的水仙花數;
};
int main(void)
{
NaturalNumber nn; //定義類的一個實例(對象)
nn.setValue (6);
cout << nn.getValue() << (nn.isPrime()?"是":"不是") <<"素數" <<endl;
nn.setValue (37);
cout<< nn.getValue() <<(nn.isPrime()?"是":"不是") <<"素數" <<endl;
nn.setValue (84);
cout<< nn.getValue() <<"的因子有:";
nn.printFactor();
cout << endl;
nn.setValue (6);
cout<< nn.getValue() <<(nn.isPerfect()?"是":"不是")<<"完全數" <<endl;
nn.setValue (26);
cout<<nn.getValue()<<" 和"<<62<<" "<<((nn.isReverse(62))?"是":"不是") << "逆向數" <<endl;
nn.setValue (100000);
cout << "所有大於0,且小於數據成員的水仙花數有:";
nn.printDaffodils();
system ("pause");
//隨着成員函數的實現,增加代碼以完成相關的測試。注意判斷類的成員函數需要測試是或否兩種情況……
}
//請在下面定義類中的各個成員函數
void NaturalNumber::setValue (int x)
{
if (x > 0)
{
n = x;
}
}
int NaturalNumber::getValue()
{
return n;
}
bool NaturalNumber::isPrime()
{
for (int i = n / 2; i > 1; --i)
{
if (!(n % i))
{
return false;
}
else
{
return true;
}
}
}
void NaturalNumber::printFactor()
{
cout << n << '\t';
for (int i = n / 2; i > 0; --i)
{
if (!(n % i))
{
cout << i << '\t';
}
}
}
bool NaturalNumber::isPerfect()
{
int sum = 0;
for (int i = n / 2; i > 0; --i)
{
if (!(n % i))
{
sum += i;
}
}
if (sum == n)
{
return true;
}
else
{
return false;
}
}
bool NaturalNumber::isReverse(int x)
{
int s = 0;
for (;x != 0;)
{
s = s * 10 + x % 10;
x = x / 10;
}
if (s == n)
{
return true;
}
else
{
return false;
}
}
bool NaturalNumber::isDaffodil(int x)
{
int s = 0, p = x;
int m;
for (;p != 0;)
{
m = p % 10;
s = s + m * m * m;
p = p / 10;
}
if (s == x)
{
return true;
}
else
{
return false;
}
}
void NaturalNumber::printDaffodils()
{
for(int i = 2; i < n; ++i)
{
if(isDaffodil(i))
{
cout << i <<" ";
}
}
cout << endl;
}
第四周實驗報告 任務三
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.