📄 removalcompleter.cpp
字号:
//-------------------------------------------------------------------// Author........: Aleksander 豩rn// Date..........:// Description...:// Revisions.....://===================================================================#include <stdafx.h> // Precompiled headers.#include <copyright.h>#include <kernel/algorithms/removalcompleter.h>#include <kernel/structures/decisiontable.h>#include <kernel/utilities/creator.h>#include <kernel/basic/message.h>//-------------------------------------------------------------------// Methods for class RemovalCompleter.//===================================================================//-------------------------------------------------------------------// Constructors/destructor.//===================================================================RemovalCompleter::RemovalCompleter() {}RemovalCompleter::~RemovalCompleter() {}//-------------------------------------------------------------------// Methods inherited from Identifier.//===================================================================IMPLEMENTIDMETHODS(RemovalCompleter, REMOVALCOMPLETER, Completer)//-------------------------------------------------------------------// Methods inherited from Algorithm.//===================================================================//-------------------------------------------------------------------// Method........: Apply// Author........: Aleksander 豩rn// Date..........:// Description...: Returns a new decision table which is a duplicate// of the input table, except for that all objects// with missing values have been removed.// Comments......:// Revisions.....://===================================================================Structure *RemovalCompleter::Apply(Structure &structure) const { // Is the input structure of right type? if (!IsApplicable(structure)) return NULL; // Cast to verified type. Handle<DecisionTable> table = dynamic_cast(DecisionTable *, &structure); // Create a new table. Handle<DecisionTable> complete = dynamic_cast(DecisionTable *, table->Duplicate()); // Operate on a masked table. bool masked = true; int no_objects = complete->GetNoObjects(masked); int no_attributes = complete->GetNoAttributes(masked); int i, j, count = 0; // Remove all objects with missing entries. for (i = no_objects - 1; i >= 0; i--) { bool remove = false; for (j = 0; j < no_attributes; j++) { if (complete->IsMissing(i, j, masked)) { remove = true; break; } } if (!remove) continue; if (!complete->RemoveObject(i, masked)) { Message::Error("Error removing object."); return NULL; } count++; } Message message; message.Notify(String::Format(count) + " objects were removed, " + String::Format(no_objects - count) + " are left."); return complete.Release();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -