📄 rules.h
字号:
#include <iostream>
#include <bitset>
#include "set.h"
using namespace std;
//make it simple, the first line must list all variables or attributes
//"relation"(A,B,C...)
const int MaxNameLength=30;
const int MaxRuleNumber=200;
const int MaxKeyNumber=15;
const int MaxComposition=20;
class Rule
{
friend class Rules;
private:
Set lhs;
Set rhs;
public:
Rule();
bool test(int pos, bool isLeft);
void lhsSet(int pos);
void rhsSet(int pos);
void setSize(int theSize);
void set(int pos, bool isLeft);
void setRule(const Set& left, const Set& right);
void operator=(const Rule& dummy);
bool operator==(const Rule& dummy);
};
class Rules
{
private:
Set leftSet;
Set rightSet;
Set attrClosure[MaxAttrNumber];
char attributes[MaxAttrNumber][MaxNameLength+1];
char relationName[MaxNameLength+1];
bool needKey;//this is needed for checklossless
int keyCount;
int attrCount;
int attrFound[MaxAttrNumber];
int numberFound;
int searchByName(const char* name);
int searchByChar(char ch, int step);
void ruleReading(FILE* stream);
Rule rules[MaxRuleNumber];
int ruleNumber;
void displayRule(int index);
void removeRule(int index);
void calcClosure();
void addRule(const Set& left, const Set& right);
int extractNames(FILE* stream, char* delimeters, char endChar='\n');
void closure(Set& attrSet, int maskedRule) const;
bool checkAttr(int index);
bool checkRule(int index);
void split();
void combine();
//"this" relation imply "dummy" relation
bool imply(const Rules& dummy) const;
void showMatrix(const Set* matrix, int row);
public:
void canonical();
void displayRules();
void decomposition();
Set candidateKey[MaxKeyNumber];
void addRule(const Rule& dummy);
void readFile(const char* fileName);
void display();
void display(const Set& attrSet);
int findKey();
bool checkLossless();
bool eachKey(Set& dummy);
bool operator==(const Rules& dummy) const;
Rules();
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -