1. 程式人生 > >實驗五:實驗報告

實驗五:實驗報告

一、問題及程式碼

/*
* 檔名稱: 正整數類
* 作??? 者: 吳濤濤
* 完成日期: 2017.4.25
* 版 本 號: 1.2
* 對任務及求解方法的描述部分:
* 輸入描述:
* 問題描述:
* 程式輸出:
* 問題分析:
*?演算法設計:
*/
#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的水仙花數;
};
 int main()
{
    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(135);
    cout<<nn.getValue()<<(nn.isDaffodil(135)?"是":"不是")<<"水仙花數"<<endl;

    nn.setValue(168);
    cout<<nn.getValue()<<"以內的水仙花數有:";
    nn.printDaffodils();

    nn.setValue(234);
    cout<<"432"<<(nn.isReverse(432)?"是":"不是")<<nn.getValue()<<"的逆序數"<<endl;

    return 0;

    //隨著成員函式的實現,增加程式碼以完成相關的測試。注意判斷類的成員函式需要測試是或否兩種情況……
}
void NaturalNumber::setValue(int x)
{
    if(x>0)
        n=x;
    else
        cout<<"輸入有誤"<<endl;
}

int NaturalNumber::getValue()
{
    return n;
}

bool NaturalNumber::isPrime()
{

    int i;
    for(i=2;i<n;i++)
    {
        if(n%i==0)
            break;
    }
    if(i>=n)
        return true;
    else
        return false;
}

void NaturalNumber::printFactor()
{
    int i;
    for(i=1;i<=n;i++)
    {
        if(n%i==0)
            cout<<i<<"  ";
    }
}

bool NaturalNumber::isPerfect()
{
    int sum=0;
    for(int i=1;i<n;i++)
    {
        if(n%i==0)
            sum+=i;
    }
    if(sum==n)
        return true;
    else
        return false;
}

bool NaturalNumber::isReverse(int x)
{
    bool a=false;
    int sum=0,i=10,s;
    while(x)
    {
        s=x%10;
        sum=sum*i+s;
        x/=10;
     }
     if(sum==n)
     {
        a=true;
     }
     return a;
}

bool NaturalNumber::isDaffodil(int x)
{
    int i,j,k;
    i=x/100;
    j=x%10%10;
    k=x%10;
    if(i*i*i+j*j*j+k*k*k==x)
        return true;
    else
        return false;
}

 void NaturalNumber::printDaffodils()
 {
     int i,j,k,x,sum;
     for(i=2;i<=n;i++)
     {
         j=i/100;
         k=i%100/10;
         x=i%10;
         sum=j*j*j+k*k*k+x*x*x;
         if(sum==i)
            cout<<i<<"  ";
     }
     cout<<endl;
 }


二、執行結果


三、心得體會

這是一個簡單的類程式碼,但是裡面包含的函式卻是非常的經典,在除錯過程中不斷地出現問題,既複習了之前的內容,又鞏固了新的所學知識

四、知識點總結

1、在應用物件時,一定要確定是在哪個類裡面的要先宣告。

2、在定義物件時,定義了private和public,並運用public對private進行操作

3、類的定義 class