Часть этого задания включает в себя распечатку на дисплее текущего уравнения, которое должно быть решено, для этого я использую следующие методы:
+ (NSString *)descriptionOfTopOfStack:(NSMutableArray *)stack {
NSMutableString *programFragment = [NSMutableString stringWithString:@""];
id topOfStack = [stack lastObject];
if (topOfStack) [stack removeLastObject];
if ([topOfStack isKindOfClass:[NSNumber class]]) {
[programFragment appendFormat:@"%g", [topOfStack doubleValue]];
} else if ([topOfStack isKindOfClass:[NSString class]]) {
NSString *operation = topOfStack;
if ([self isDoubleOperandOperation:operation]) {
[programFragment appendFormat:@"(%@ %@ %@)", [self descriptionOfTopOfStack:stack], operation, [self descriptionOfTopOfStack:stack]];
} else if ([self isSingleOperandOperation:operation]) {
[programFragment appendFormat:@"%@( %@ )", operation, [self descriptionOfTopOfStack:stack]];
} else if ([ self isNoOperandOperation:operation]) {
[programFragment appendFormat:@"%@", operation];
} else if ([self isVariable:operation]) {
[programFragment appendFormat:@"%@", operation];
}
}
return programFragment;
}
+ (NSString *)descriptionOfProgram:(id)program {
NSMutableArray *stack;
if ([program isKindOfClass:[NSArray class]]) {
stack = [program mutableCopy];
}
return [self descriptionOfTopOfStack:stack];
}
Моя программа вычисляет результаты и все в порядке, единственная проблема заключается в том, что когда я ввожу переменную, цифру или операцию с одним операндом, на дисплее отображается только указанная последняя запись, потому что она не продолжает перебирать остальную часть значения, присутствующие в массиве, поскольку никакие другие рекурсивные вызовы не выполняются, есть идеи, как заставить программу работать по всему стеку и не прерывать вывод?