1

だから、二次方程式を解くアプリを作っています。メインインターフェイスは、ユーザーに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

4 に答える 4

1

使用する :

^ルートの演算子はありません。使用sqrtまたはpow(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);
于 2013-01-02T17:40:44.393 に答える
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);
于 2013-01-02T17:35:29.527 に答える
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];
于 2013-01-02T17:37:37.527 に答える
0

いくつかの問題があります^。べき乗演算子として使用しています。そうではない。また、「指数」の1つにタイプミスがあります: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);
于 2013-01-02T17:39:08.087 に答える