2010-05-12 4 views
0

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

- (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, который сообщает, как вы догадались, ответ. Кто-нибудь видит какие-то недостатки в программе? Заранее спасибо!

ответ

6

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

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

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

+1

Это хороший пример того, как использование '=' на многих языках программирования процедур смущает людей. Это не равенство, это назначение. Итак, разработчики языка, пожалуйста, либо используйте другой символ (например, ': ='), либо на самом деле подразумеваете равенство (например, в Haskell). – sigfpe

Смежные вопросы