0

ちょうど練習として、有名な中学生のピタゴラスの定理、a の 2 乗 + b の 2 乗 = c の 2 乗を解くアプリに取り組んでいます。残念ながら、私の目には、出てくる答えは実際の答えとは何の関係もありません。「解決」アクション中に使用されるコードは次のとおりです。

- (IBAction)solve {
 int legoneint;
 int legtwoint;
 int hypotenuseint;

 int lonesq = legoneint * legoneint;
 int ltwosq = legtwoint * legtwoint;
 int hyposq = hypotenuseint * hypotenuseint;

 hyposq = lonesq + ltwosq;

 if ([legone.text isEqual:@""]) {
  legtwoint = [legtwo.text intValue];
  hypotenuseint = [hypotenuse.text intValue];

  answer.text = [NSString stringWithFormat:@"%d", legoneint];
  self.view.backgroundColor = [UIColor blackColor];
 }
 if ([legtwo.text isEqual:@""]) {
  legoneint = [legone.text intValue];
  hypotenuseint = [hypotenuse.text intValue];

  answer.text = [NSString stringWithFormat:@"%d", legtwoint];
  self.view.backgroundColor = [UIColor blackColor];
 }
 if ([hypotenuse.text isEqual:@""]) {
  legoneint = [legone.text intValue];
  legtwoint = [legtwo.text intValue];

  answer.text = [NSString stringWithFormat:@"%d", hypotenuseint];
  self.view.backgroundColor = [UIColor blackColor];
 }
}

ちなみに、すべて直角三角形の各数学的部分に対応する を legone, legtwo, and hypotenuse表しています。ご想像のとおり、それが答えです。プログラムに欠陥がある人はいますか? 前もって感謝します!UITextFieldAnswerUILabel

4

1 に答える 1

6

プログラムを注意深くチェックしませんでしたが、最初の行にはすでに大きな問題があります。

int lonesq = legoneint * legoneint;
int ltwosq = legtwoint * legtwoint;
int hyposq = hypotenuseint * hypotenuseint;

この変数は、まだまったく割り当てられていない変数を使用して定義されます。テキストフィールドから取得した変数の値を設定してから、計算を行う必要があります。Cはシーケンシャル言語であり、すべてが上から下に実行されます。「a = b c」とは言えず、プログラムのどの場所でもaはbcになります。

于 2010-05-12T21:02:56.557 に答える