1、創建魔方類。
2、類內定義公式結構體Formula,成員有公式編號、所屬層及轉動公式。
公式是這樣來組織的,比如:ahdhda 對應的公式為ahd-h--d--a-
或簡化為: ahd-hda- ,你也可以采用其他的方式來組織你的數據結構。
3、魔方類的構造函數要能夠根據formula.txt文件中的公式個數動態分配指定的內存空間並將公式信息讀入到分配的內存中,析構函數要在銷毀對象時釋放該動態分配的內存空間。
4、編寫如下成員函數,顯示幫助信息,當參數為0時,使用文件操作讀取文件help.txt的內容並顯示幫助;當參數為1、2、3時,可使用函數system()分別直接顯示help1.html、help2.html、help3.html文件的內容,注意要包含頭文件<stdlib.h>。如:system("help2.html");
void Help(int layer=0);
5、編寫如下成員函數,返回已提供的某層的公式個數,參數取值1、2、3,當為0時表示所有層的公式個數。
int getFormulaNumbers(int layer=0);
6、編寫如下成員函數,返回給定公式編號的轉動式,若參數為0,返回所有公式的詳細信息字符串。
char *getFormula(int number=0);
7、編寫如下成員函數,返回魔方向左右上下轉動後的新的轉動式。
原面 b h a p d g 左轉 b h g d a p 右轉 b h d g p a 上轉 a p h b d g 下轉 p a b h d g
假設:左轉:1 右轉:2 上轉:3 下轉:4,則:
Rotate(8,"113")表示將公式8在“魔方向左轉180度,向上90度”後的新的轉動式。
char *Rotate(char *formula,int direction); //函數將直接對原字符串進行修改
char *Rotate(char *formula,char* direction); //函數將直接對原字符串進行修改
char *Rotate(int number,int direction); // 要避免破壞原轉動式
char *Rotate(int number,char* direction); // 要避免破壞原轉動式
8、編寫如下成員函數,返回所給公式的逆轉式
char *Reverse(int number); // 要避免破壞原轉動式
char *Reverse(char *formula);// 將直接對原字符串進行修改,要有足夠空間存放新的轉動式
9、編寫主程序,對所寫魔方類進行測試,測試數據要合理完善,測試結果正確。
程序的樣子看起來大致如下:
#include<iostream.h>
#include<string.h>
#include<strstrea.h>
#include<fstream.h>
#include<stdlib.h>
// 僅是參考的類原型
class mf
{
private:
char buff[500]; // 內部使用的字符數組空間
struct Formula // 魔方類內部使用的結構體
{
int number,layer; // 公式編號、公式所屬層號
char formula[50]; // 存放具體的格式化的公式
};
Formula *p; // 指向轉動公式數組的指針
public:
void Help(int layer=0); // 顯示指定層的轉動幫助信息
int getFormulaNumbers(int layer=0); // 返回已某層的公式個數
char *getFormula(int number=0); // 根據公式編號返回轉動式
char *Rotate(char *formula,int direction); // 所給公式在指定轉動方向下的新的轉動式
char *Rotate(char *formula,char* direction);// 所給公式在指定轉動方向下的新的轉動式
char *Rotate(int number,int direction); // 根據公式編號及轉動方向返回新的轉動式
char *Rotate(int number,char* direction); // 根據公式編號及轉動方向返回新的轉動式
char *Reverse(int number); // 根據公式編號返回其相反的轉動式
char *Reverse(char *formula); // 返回所給公式相反的轉動式
mf(char* file="formula.txt"); // 從文件中讀取信息構造對象
~mf(); // 析構函數
};
void main()
{
}