读书人

评分算法的实现解决方案

发布时间: 2012-02-14 19:19:19 作者: rapoo

评分算法的实现
我想实现一般的评分算法.比如说> =75是A.65 <=X <75是B.60 <X <65是C等等,我该怎样实现?

[解决办法]
上面的情况和下面的情况不一样,上面的情况没有公式,下面的情况应该有公式的,如果也没有公式,还得用笨办法,我见过几百个if的情况,没有规律的时候,只能那么写
[解决办法]
建立个表, 然后用查表法:

const
DataNumber = 3;
DataValue : array [1..DataNumber, 1..4] of Double =
((32.1, 40.4, 46.4, 48.4),
(32.4, 40.8, 47.1, 49.2),
(32.8, 41.3, 47.8, 49.9));

function GetBodilyForm(fHeight, fWeight: Double): String;
var
iIndex: Integer;
begin
Result := '未知 ';
iIndex := Round(fHeight - 139);
if (iIndex < 1) or (iIndex > DataNumber) then exit;
if fWeight < DataValue[iIndex, 1] then
Result := '营养不良 '
else if fWeight < DataValue[iIndex, 2] then
Result := '较低体重 '
else if fWeight < DataValue[iIndex, 3] then
Result := '正常体重 '
else if fWeight < DataValue[iIndex, 4] then
Result := '超重 '
else
Result := '肥胖 ';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMesage(GetBodilyForm(145.5, 40.5));
end;

[解决办法]
type
THWMark = record
MinH, MaxH: Double;
MinW, MaxW: Double;
Mark: string;
end;
const
TableNumber = 10;
var
HWTable: array[1..TableNumber] of THWMark = (
(MinH: 140; MaxH: 140.9; MinW: 0; MaxW: 32.1; Mark: '营养不良 '),
(MinH: 140; MaxH: 140.9; MinW: 32.1; MaxW: 40.3; Mark: '较低体重 '),
(MinH: 140; MaxH: 140.9; MinW: 40.3; MaxW: 46.3; Mark: '正常体重 '),
(MinH: 140; MaxH: 140.9; MinW: 46.3; MaxW: 48.3; Mark: '超重 '),
(MinH: 140; MaxH: 140.9; MinW: 48.3; MaxW: 10000; Mark: '肥胖 '),
(MinH: 141; MaxH: 141.9; MinW: 0; MaxW: 32.4; Mark: '营养不良 '),
(MinH: 141; MaxH: 141.9; MinW: 32.4; MaxW: 40.7; Mark: '较低体重 '),
(MinH: 141; MaxH: 141.9; MinW: 40.7; MaxW: 47.0; Mark: '正常体重 '),
(MinH: 141; MaxH: 141.9; MinW: 47.0; MaxW: 49.1; Mark: '超重 '),
(MinH: 141; MaxH: 141.9; MinW: 49.1; MaxW: 10000; Mark: '肥胖 ')
);

function GetMark(Height, Width: Double): string;
var
i: integer;
begin
Result := '未知 ';
for i := 1 to TableNumber do
with HWTable[i] do
begin
if (Height > = MinH) and (Height <= MaxH) and
(Width > = MinW) and (Width < MaxW) then
begin
Result := Mark;
Exit;
end;
end;
end;


如果值太多,把他们存在文件或数据库中,在使用的时候再加载到数组中即可。

读书人网 >.NET

热点推荐