【項目4 - 正整數類】設計一個“正整數”類,並通過一系列的成員函數對其性質進行做出判斷或列出相關聯的數值。下面給出類聲明,請實現各成員函數。另外,模仿已經給出的main()函數,完成你所設計的各個成員函數的測試。如果時間有限,不必實現所有成員函數。
[cpp] view plaincopyprint?
#include<iostream>
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的水仙花數;
};
void 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()<<”的因子有:”;
printFactor();
//隨着成員函數的實現,增加代碼以完成相關的測試。注意判斷類的成員函數需要測試是或否兩種情況……
}
//請在下面定義類中的各個成員函數
*
* 程序的版權和版本聲明部分
* Copyright (c)2013, 煙臺大學計算機學院學生
* All rightsreserved.
* 文件名稱: object.cpp
* 作 者: 袁靜
* 完成日期:2013年3月23日
* 版本號: v1.0
* 輸入描述:無
* 問題描述:
程序輸出:
#include<iostream>
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的水仙花數;
};
void 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()<<”的因子有:”;
printFactor();
//隨着成員函數的實現,增加代碼以完成相關的測試。注意判斷類的成員函數需要測試是或否兩種情況……
}
//請在下面定義類中的各個成員函數
#include <iostream>
#include <cmath>
using namespace std;
class NaturalNumber
{
private:
int n;
public:
void set_value(int x);
int get_value(); //返回私有成員的值
bool is_prime();
void printFactor();
bool is_perfect();
bool is_Daffodil(int x);
void printDaffodils();
};
void NaturalNumber::printDaffodils() //顯示所有大於1,且小於數據成員n的水仙花數;
{
int z;
for(z=2;z<n;z++)
if(is_Daffodil(z))
cout<<z<<" ";
cout<<endl;
}
bool NaturalNumber::is_Daffodil(int x )
{ bool daffodil=true;
int gw,sw,bw;
bw=n/100;
sw=(n%100)/10;
gw=n%10;
if(n!=sw*sw*sw+bw*bw*bw+gw*gw*gw)
daffodil=false;
return daffodil;
}
bool NaturalNumber::is_perfect()
{ bool prime=true;
int k,sum=1;
for(k=2;k<n;++k){
if(n%k==0)
prime=false;
break;
}
prime=true;
return prime;
}
void NaturalNumber::set_value(int x)
{
n=x;
}
int NaturalNumber::get_value()
{
return n;
}
bool NaturalNumber::is_prime()
{
bool prime=true;
int i,m;
m=sqrt(n);
for(i=2;i<=m;++i)
if(n%i==0){
prime=false;
break;
}
return prime;
}
void NaturalNumber::printFactor()
{
int j ,x ;
for(j=1;j<=n;++j)
if(n%j==0)
cout<<j<<" ";
cout<<endl;
}
int main()
{ int x;
NaturalNumber num;
num.set_value(7);
cout<<num.get_value()<<" :"<<(num.is_prime()?"是":"不是")<<"素數"<<endl;
num.set_value(9);
cout<<num.get_value()<<" :"<<(num.is_prime()?"是":"不是")<<"素數"<<endl;
cout<<" "<<endl;
cout<<num.get_value()<<"的因子有:";
cout<<" "<<endl;
num.printFactor();
cout<<num.get_value()<<(num.is_perfect()?"是":"不是")<<"完全數"<<endl;
cout<<" "<<endl;
num.set_value(111);
cout<<" "<<endl;
cout<<num.get_value()<<(num.is_Daffodil( x)?"是":"不是")<<"水仙花數"<<endl;
num.set_value(153);
cout<<" "<<endl;
cout<<num.get_value()<<(num.is_Daffodil( x)?"是":"不是")<<"水仙花數"<<endl;
cout<<" "<<endl;
num.set_value(333);
cout<<"所有大於1,而且小於"<<num.get_value()<<"的水仙花數爲:";
num.printDaffodils();
return 0;
}
親們,爲什麼此程序不能輸出,“大於一,而且小於n”的所有水仙花數 。num.printDaffodils()是否有問題
第四周 項目4---正整數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.