iPhone SDK математика - проблема теоремы Пифагора! - PullRequest
0 голосов
/ 13 мая 2010

Как практика, я работаю над приложением, которое решает известную теорему Пифагора средней школы: квадрат + b в квадрате = c в квадрате. К сожалению, исходящий ответ, на мой взгляд, не имеет ничего общего с фактическим ответом. Вот код, используемый во время действия «решить».

- (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 все представляют UITextField, который соответствует каждой математической части прямоугольного треугольника. Answer - это UILabel, который говорит, как вы уже догадались, ответ. Кто-нибудь видит какие-либо недостатки в программе? Заранее спасибо!

1 Ответ

6 голосов
/ 13 мая 2010

Тщательно не проверял программу, но в первых строках уже есть большая проблема:

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

Эти переменные определяются с использованием переменных, которые еще не назначены вообще. Вам нужно установить значение переменных, взятых из текстовых полей, а затем выполнить математику. C - это последовательный язык, все выполняется сверху вниз, вы не можете сказать «a = b c» и a будет b c в любом месте программы.

...