Математические уравнения в разработке Objective C iOS - PullRequest
0 голосов
/ 25 декабря 2011

Я пытаюсь разработать стартовое приложение, чтобы привыкнуть к некоторым утилитам разработки Xcode и iOS.Я пытаюсь создать приложение, которое будет решать квадратное уравнение.Я попытался добавить этот код под действием кнопки «Рассчитать».Сначала у меня было «Рассчитать», просто сложив три входа вместе.Теперь я пытаюсь сделать это решить уравнение.Это то, что я пока описал.

-(IBAction) Calculate {

float x = ([A.text floatValue]);  
float y = ([B.text floatValue]);
float z = ([C.text floatValue]);

total.text =[NSString alloc]initWithFormat:@"%.2f", -y+sqrtf(y*y-4*x*z)/2*x;

}

Я знаю, что это не полное уравнение, но это то, что я имею до сих порОшибка, которую я получаю, состоит в том, чтобы добавить скобку, где точка с запятой.Как сделать это более эффективным?Я хотел создать функцию solveEquation(), но столкнулся с проблемами.Что я могу сделать?

Ответы [ 2 ]

3 голосов
/ 25 декабря 2011

Вам нужно больше скобок. Правильный синтаксис: [object message], а поскольку [NSString alloc] возвращает объект, вам нужно [[NSString alloc] initWithFormat:@"%.2f", -y+sqrtf(y*y-4*x*z)/2*x] (initWithFormat: - другое сообщение).

3 голосов
/ 25 декабря 2011

Вам нужно больше скобок!

total.text = [[NSString alloc]initWithFormat:@"%.2f", -y+sqrtf(y*y-4*x*z)/2*x];

Квадратные скобки указывают, что вы отправляете сообщение Objective-C.Для каждого отправляемого сообщения вам понадобится одна пара скобок.Давайте разберем его так:

NSString *uninitializedString = [NSString alloc];
NSString *initializedString = [uninitializedString initWithFormat:@"%.2f", x+y+z];
total.text = initializedString;

В первой строке мы отправляем сообщение alloc объекту NSString, который на самом деле является объектом class , который знает каквыделить экземпляры NSString.Но он не инициализирует экземпляры.Он в значительной степени просто выделяет память для них.

Во второй строке мы отправляем сообщение этому выделенному, но неинициализированному экземпляру NSString, говоря ему инициализировать себя путем форматирования шаблона %.2f,Это сообщение возвращает инициализированный экземпляр NSString.

Наконец, в третьей строке мы используем этот инициализированный экземпляр NSString.

Очевидно, было бы утомительно всегда требоватьпромежуточная переменная для хранения выделенного, но не инициализированного объекта.Таким образом, мы устраняем его, беря результат первого сообщения и отправляя ему сообщение напрямую:

total.text = [[NSString alloc] initWithFormat:@"%.2f", x+y+z];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...