2009-12-05 22 views
0

所以我以前用C做过简单的数学程序,但我手头的任务有点复杂,对于我目前的知识。作业:找出一个计算器的论坛

我需要把这里找到的计算器(计算器:http://ohts.wustl.edu/risk/calculator.html,附录内容包含一下:http://ohts.wustl.edu/risk/formula.html)并将其编程为ObjC程序。我很难弄清楚这个重量/公式。希望能找到正确的方向帮助我如何解决这个问题。

+0

也许你难以计算出体重的原因是因为体重根本不归因于公式。有五个变量输入和大约十几个常量(平均变换值和贝塔系数)。将它们全部插入公式(在“模型摘要”中显示),然后就完成了。你真正的障碍是什么? – 2009-12-05 22:00:13

+0

hmm。我想我习惯于'更简单'的数学公式。大声笑 – HollerTrain 2009-12-05 22:06:28

+0

进一步审查后,我确实看到我如何让它比我想象的更难。我可以很容易地在C中编写这个代码,试图将它移到ObjC将需要一些时间:)感谢罗布:) – HollerTrain 2009-12-05 22:13:18

回答

0

所有的实现仅仅是C,在NSNumber中换行加倍是没有意义的。

#import <Cocoa/Cocoa.h> 

@interface GRE:NSObject 
@end 
@implementation GRE 
+ (NSNumber *) compute:(double) age :(double) iop :(double) cct :(double) vcd :(double) psd 
{ 
     double meanage = 5.64301, betaage = 0.23260; 
     double meaniop = 24.1386, betaiop = 0.09025; 
     double meancct = -14.3349, betacct = 0.71503; 
     double meanpsd = 9.76001, betapsd = 0.12376; 
     double meanvcd = 3.60828, betavcd = 0.17689; 
     double S0_t = 0.91831; 

     double t_cct = -1.0 * (cct/40.0); 
     double t_psd = psd/.2; 
     double t_vcd = vcd/0.1; 

     double agedecade = age/10.0; 
     double xbetamean = (agedecade - meanage) * betaage + 
       (iop - meaniop) * betaiop + 
       (t_cct - meancct) * betacct + 
       (t_psd - meanpsd) * betapsd + 
       (t_vcd - meanvcd) * betavcd; 

     double risk = 1 - pow(S0_t, exp(xbetamean)); 
     return [NSNumber numberWithDouble:risk]; 
} 
@end 
int main() 
{ 
     NSAutoreleasePool * p = [NSAutoreleasePool new]; 

     NSLog(@"Risk: %@", [GRE compute:(55) :(24) :(540): (.40) : (2.2)]); 

     [p release]; 
}