Objective C - 二次方程求解器

时间:2013-01-02 17:33:08

标签: objective-c ios equation solver quadratic

所以,我正在制作一个解决二次方程的应用程序。主界面只是要求用户输入A,B和C的值。问题是,我没有得到正确的答案。这是代码:

NSString *intStringa = [NSString stringWithFormat:@"%@", a.text];
int aa = [intStringa intValue];
NSString *intStringb = [NSString stringWithFormat:@"%@", b.text];
int bb = [intStringb intValue];
NSString *intStringc = [NSString stringWithFormat:@"%@", c.text];
int cc = [intStringc intValue];
double d = ( -(bb) + ( (bb)^2 - (4*aa*cc) ) ^0,5 ) / (2*aa);
double e = ( -(bb) - ( (bb)^2 - (4*aa*cc) ) ^0.5 ) / (2*aa);
label1.text = [NSString stringWithFormat:@"%lf", d];
label2.text = [NSString stringWithFormat:@"%lf", e];

有什么想法吗? 感谢!!!

4 个答案:

答案 0 :(得分:1)

您无法在C及相关语言(C ++,Objective-C等)中使用^进行求幂 - 它是一个按位XOR运算符。

变化:

double d = ( -(bb) + ( (bb)^2 - (4*aa*cc) ) ^0,5 ) / (2*aa);
double e = ( -(bb) - ( (bb)^2 - (4*aa*cc) ) ^0.5 ) / (2*aa);

为:

#include <math.h>

...

double d = - (bb + sqrt(bb * bb - 4 * aa * cc)) / (2 * aa);
double e = - (bb - sqrt(bb * bb - 4 * aa * cc)) / (2 * aa);

答案 1 :(得分:1)

使用:

root用户没有^运算符。使用sqrtpow(base,exp)

double d = ( -bb + sqrt( bb*bb - 4*aa*cc ) ) / (2*aa);
double e = ( -bb - sqrt( bb*bb - 4*aa*cc ) ) / (2*aa);

,或者

double d = ( -bb + pow(( bb*bb - 4*aa*cc ), 0.5) ) / (2*aa);
double e = ( -bb - pow(( bb*bb - 4*aa*cc ), 0.5) ) / (2*aa);

答案 2 :(得分:0)

C中没有强大的^运算符。您必须使用pow(b,2)b*b

你为什么要使用stringWithFormat?只需使用[a.text intValue]

int aa = [a.text intValue];
int bb = [b.text intValue];
int cc = [c.text intValue];
double d = (-bb + sqrt(bb*bb - 4*aa*cc)) / (2.0*aa);
double e = (-bb - sqrt(bb*bb - 4*aa*cc)) / (2.0*aa);
label1.text = [NSString stringWithFormat:@"%lf", d];
label2.text = [NSString stringWithFormat:@"%lf", e];

答案 3 :(得分:0)

您遇到了一些问题:您使用^作为取幂运算符;它不是。你也有一个“指数”中的拼写错误:0,5而不是0.5。我会把你的等式写成:

double d = ( -bb + sqrt( bb*bb - 4*aa*cc ) ) / (2*aa);
double e = ( -bb - sqrt( bb*bb - 4*aa*cc ) ) / (2*aa);