Новичок в кодировании и хотел бы некоторые указатели относительно моего кода Objective C - PullRequest
1 голос
/ 26 февраля 2012

Я пробираюсь по книге Стефана Кочана о Цели C и столкнулся с проблемой, с которой, я надеюсь, кто-то может помочь.

Вот мой метод печати из класса Fraction, над которым я работал:

-(void) print: (BOOL) reduce {
Fraction *resultReduced = [[Fraction alloc] init];
[resultReduced setTo:numerator over:denominator];

if (denominator < 0) {
    numerator = -numerator;
    denominator = -denominator;
}    
if (reduce) {
    [resultReduced reduce];
    if (resultReduced.denominator < 0) {
        resultReduced.denominator = -resultReduced.denominator;
        resultReduced.numerator = -resultReduced.numerator;
    }
    else if (resultReduced.denominator == 1)
        NSLog (@"%i", resultReduced.numerator);
    else if (resultReduced.numerator == 0)
        NSLog (@"0");
    else if (resultReduced.numerator == resultReduced.denominator)
        NSLog (@"1");
    else if (resultReduced.numerator > resultReduced.denominator || resultReduced.numerator < 0) {
        [resultReduced improper];
        if (resultReduced.whole == 0)
            NSLog (@"%i/%i", resultReduced.numerator, resultReduced.denominator);
        else if (resultReduced.whole < 0 && resultReduced.numerator < 0) {
            resultReduced.numerator = -resultReduced.numerator;
            NSLog (@"%i %i/%i", resultReduced.whole, resultReduced.numerator, resultReduced.denominator);             
        }
        else
            NSLog (@"%i %i/%i", resultReduced.whole, resultReduced.numerator, resultReduced.denominator);
    }
    else
        NSLog (@"%i/%i", resultReduced.numerator, resultReduced.denominator);
}
else
    NSLog (@"%i/%i", numerator, denominator);

}

Проблема в том, что если вычесть 15/4 из 2/3, я получу -37/12, который я хотел бы отобразить как -3 1/12, используя это сообщение [resultReduced Properper], но оно Работа. Если я изменю

else if (resultReduced.numerator > resultReduced.denominator || resultReduced.numerator < 0) {

просто так, если это так.

Может кто-нибудь объяснить мне, почему использование if работает, а если нет -

1 Ответ

0 голосов
/ 26 февраля 2012

Оператор "if" сам по себе будет выполняться каждый раз. «Else» будет выполняться только в случае сбоя «if».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...